只是好奇,是有一个更快/更简洁的方式来实现这一目标:双[] - >双击[,]
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