【发布时间】:2011-11-13 10:37:38
【问题描述】:
您好,这确实让我很困扰,我希望有人能回答我。我一直在阅读有关ref(和out)的信息,我试图弄清楚我是否正在使用refs 减慢我的代码速度。通常我会替换类似的东西:
int AddToInt(int original, int add){ return original+add; }
与
void AddToInt(ref int original, int add){ original+=add; } // 1st parameter gets the result
因为在我看来这是
AddToInt(ref _value, _add);
比这更容易阅读和代码
_value = AddToInt(_value, _add);
我确切地知道我在使用ref 的代码上做什么,而不是返回一个值。但是,性能是我非常重视的事情,当您使用 refs 时,显然取消引用和清理会慢很多。
我想知道的是为什么我读到的每一篇文章都说很少有地方你通常会通过ref(我知道这些例子是人为的,但我希望你能明白这个想法),在我看来 ref 的例子更小、更干净、更准确。
我也很想知道为什么 ref 确实比返回值类型慢 - 在我看来,如果我要在返回函数值之前对其进行大量编辑,那将是更快地引用实际变量来编辑它,而不是在它从内存中清除之前不久的那个变量的实例。
【问题讨论】:
-
出于文体原因,我通常更喜欢返回一个值,因为我喜欢无副作用的函数。
-
您想计算性能成本吗?询问分析员,不要问我们!
-
第一种情况更容易阅读,因为您已经相应地命名了您的方法。像
_value = Add(_value, _add);或_value = SumOf(_value, _add);这样的东西对我来说更具可读性。
标签: c# performance ref