的通用初始化我有一個多維數組,我想在一個簡單快速的方法來初始化:多維數組
double[,,] arr = new double[4,5,6];
// doesn't work by design
foreach(double d in arr)
d = ... ; // my initialization value
這顯然不工作。但我想有一個通用函數來將所有數組值設置爲選擇的默認值。有了自己的類,我可以編寫一個特殊的構造函數,但是對於值類型我沒有真正的想法。使用C++,我可以用一個for循環以線性方式訪問所有項目,但在C#中,我認爲我必須儘可能多地使用循環,因爲我有尺寸。目前我還沒有更好的解決方案(或者我正在使用不安全的代碼和指針算術,這可能會起作用)。
有沒有更好的方法來做到這一點?
如果您關注的是速度,不要使用多維數組。它們在.NET中非常緩慢(與單維數組相比)。儘管指針追逐,即使參差不齊的數組也更快。這裏最簡單+最快的事情就是使它成爲一維,並自己進行索引數學運算。 – harold 2012-02-29 09:48:38
這是以某種方式相關,並發現它很有趣:http://stackoverflow.com/questions/136836/c-sharp-array-initialization-with-non-default-value – mindandmedia 2012-02-29 09:51:15
感謝您的意見,速度實際上不是一個問題我目前的應用程序,但我更喜歡這裏乾淨的語法。 – 2012-02-29 09:56:36