我基本上创建了一个轻量级类,它传递了大约10个参数,它不会改变这些参数,它只是在构造函数中将它们存储在本地.
一些是引用类型(字符串,类),其他是值类型(int,bool,enums).
我的问题是我应该用关键字'ref'传递这些(除了我的类)吗?
我在这里考虑的是表现.
嗨这是真的困扰我的事情,我希望有人能给我一个答案.我一直在阅读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真的比返回一个值类型慢 - 对我来说,在我看来,如果我要在返回它之前编辑很多函数值,那么引用实际变量会更快在从内存中清除之前不久编辑它而不是该变量的实例.
作为一个对.NET管道不太了解的程序员,我想知道使用ref字符串作为参数是否有利于C#的性能?
假设我有一个像这样的方法:
public int FindSomething(string text)
{
    //Finds a char in the text and returns its index
}
当我使用这个方法时,编译器会为方法创建一个文本副本,对吧?
但是,如果我使用ref关键字:
public int FindSomething(ref string text)
{
    //Finds a char in the text and returns its index
}
..编译器应该只发送文本的指针地址...
那么使用ref这样的性能有好处吗?