每当c ++返回一个对象时,一旦返回该方法,对象的所有内容都会被复制到新对象,但在C#中没有这样的东西,AFAIK。
我的问题是,在C#中,在速度和内存消耗方面是否低于两个?
double[] GenerateArray()
和
void GenerateArray(ref double[] result)
答案 0 :(得分:2)
他们将相当不错;请注意,此处out
优先于ref
。但是,由于性能没有明显的区别,我强烈建议更加惯用double[] GenerateArray()
via return
是一个更好的实现;同样重要的是,out
/ ref
是混淆的常见来源,并且可能经常需要为此目的引入额外的变量(而不是使用返回值作为表达式)。
非常小,但这也意味着 GenerateArray
内部的间接少一个 - 意思是:使用ref
/ out
,{ {1}}需要首先取消引用result
以获取数组引用,然后取消引用该数组。