2017-08-09 43 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(c中的double d)'不会编译 – haim770

+0

我想在屏幕上的标签中显示c的值..并且返回一个空字符串 –

回答

1

在物体上ToString,除非被覆盖返回对象的类型名称。此外,您的foreach不会编译,因为二维数组中的每个项目的类型为double[]而不是double

你能做什么,用string.Join和LINQ Select是:

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

或者,如果分离器是一样的,与SelectMany作为@Jakub Dabek建议:

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

对于数据:

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

cJagged Array。如果您尝试一个数组它仅仅返回它的类型上运行.ToString()

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

: 那么试试这个。

如果你想把它转换成一个字符串,你需要决定格式。如果我可以建议一个:

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(); 

如果程序只在一种文化下运行,那么设置文化并不是绝对必要的。但是来自具有“,”作为分隔符的文化,我经常遇到与此相关的错误。当然你也可以做l2.ToString().Replace(",", ".")