2017-08-09 78 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(",", ".")