只是好奇,是有一個更快/更簡潔的方式來實現這一目標:雙[] - >雙擊[,]
double[] source = ... // some initialisation
var target = new double[1, source.Length];
for (var c = 0; c < source.Length; c++)
{
target[0, c] = source[c];
}
只是好奇,是有一個更快/更簡潔的方式來實現這一目標:雙[] - >雙擊[,]
double[] source = ... // some initialisation
var target = new double[1, source.Length];
for (var c = 0; c < source.Length; c++)
{
target[0, c] = source[c];
}
既然你提的這是對的P/Invoke,BlockCopy可能是合理使用:
double[] source = new double [] {1,2,3,4,7,8,9,0};// some initialisation
double[,] target = new double[1, source.Length];
Buffer.BlockCopy(source, 0, target, 0, source.Length * sizeof(double));
聽起來很有趣。有什麼優勢:double [,] target = {{/ *您的值列表* /}};?謝謝。 – cs0815 2013-02-24 10:54:29
@csetzkorn是不是從'double []'轉換成'double [,]'是你問題的要點?所以如果他直接初始化'double [,]',它不會回答你的問題了。 – CodesInChaos 2013-02-24 10:55:52
@csetzkorn,如果您處於可以將值硬編碼到初始化程序中的位置,那麼做起來會更簡單。但是如果你不能通過編譯時間常量來表達數組,那麼就不能使用這種方法。 – driis 2013-02-24 11:01:24
是'alphas'保證是相同的長度,源的陣列? – driis 2013-02-24 10:36:56
你爲什麼需要這樣做?爲什麼只用一行創建一個二維數組? – 2013-02-24 10:38:47
如果你現在如何在內存中的佈局目標我想你可以使用http://msdn.microsoft.com/en-us/library/system.buffer.blockcopy.aspx但肯定不是便攜式和脆弱的... – rene 2013-02-24 10:39:14