2017-08-09 33 views
-3
double[] a = { 2.122, 3.665, 4.917 }; 
double[][] c = m_CO.Process(cc); 

foreach(double d in c) 
{ 
    lblText.Text = d.tostring(); 
} 

結果は(system.Double[][])または(Empty string)ダブル[] []文字列に変換[C#の]

+2

実際に質問する必要があります。あなたは結果が何であるか、そしてコンパイルされないサンプルコードを示しました。何を期待していたのですか、そして実際のコードは何ですか? –

+0

'foreach(double d in c)'はコンパイルされません – haim770

+0

私は画面上のラベルにcの値を表示したいのですが、空の文字列を返します –

答えて

1

ToStringオブジェクトに、オーバーライドされたリターンしない限り、オブジェクトの型の名前です。さらに、foreachは、2d配列の各項目がdouble[]であり、doubleではないため、コンパイルされません。データについては

string result = string.Join(",", d.SelectMany(i => i)); 

:@Jakub Dabekが示唆したように、セパレータはSelectManyと、同じであれば、

string result = string.Join(",", d.Select(i => string.Join(",", i))); 

または:string.JoinとLINQのSelectを使って何ができるか

は、次のとおりです。

double[][] d = new double[2][] 
{ 
    new double[] {1,2}, 
    new double[] {3,4}, 
}; 

返信:"1,2,3,4"

+1

あなたは 'string.Join("、 "、d.SelectMany(t => t))' –

+0

@JakubDąbekを実行することができます - 同じセパレータの場合はtrueです。良い提案。私の答えを編集しました –

0

cは、Jagged Arrayです。 だから、これを試してみてください。

foreach (double[] da in c) 
{ 
    foreach (var d in da) 
    { 
      lblText.Text += d.ToString(); 
    } 
} 
0

をあなたはそれが単にその型を返しますアレイ上.ToString()を実行しようとします。

これを文字列に変換する場合は、形式を決定する必要があります。

double[] a = { 2.122, 3.665, 4.917 }; 
double[][] c = m_CO.Process(cc); 

var usCulture = new CultureInfo("en-US"); 
// Using a list to build the string is more efficient than += every time 
var tmpList = new List<string>(); 
foreach (var l1 in c) // l1 is double[] 
{ 
    foreach (var l2 in l1) // l2 is double 
    { 
     // Specify en-US culture since many cultures use "," instead of "." for decimal separator 
     tmpList.Add(l2.ToString(usCulture)); 
    } 
} 
lblText.Text = string.Join(", " , tmpList); 
tmpList.Clear(); 

プログラムが1つのカルチャーでのみ実行される場合、カルチャーを設定することは厳密には必要ではありません。しかし、 "、"という区切り文字を持つ文化から来て、私はしばしばこれに関連するバグに遭遇します。もちろん、l2.ToString().Replace(",", ".")も行うことができます。

関連する問題