可能重复:
Read-only (“const”-like) function parameters of C#
Why is there no const member method in C# and const parameter?
过去用C ++编程,我记得我们可以在方法中创建一个常量的引用/指针参数。
如果我的记忆是正确的,则下面的意思是该方法不能改变参考,而参考本身是一个常量参考。
void DisplayData(const string &value) const
{
std::count << value << endl;
}
类中的方法在C#中是否有等价物?
我问的原因是,我试图通过引用传递一个对象(速度),同时不希望任何人改变它。
答案 0 :(得分:12)
C#没有等效内容,之前已被问过many,many,many,many次。
如果您不希望任何人改变“引用”,或者您可能意味着对象的内容,请确保该类不公开任何公共setter或变更类的方法。如果您无法更改类,请让它实现一个仅以只读方式公开公开成员的接口,并改为传递接口引用。
如果您想要停止更改引用的方法,那么默认情况下,如果您通过“引用”传递它,则实际上是按值传递引用。从方法更改引用指向的任何尝试只会影响本地方法副本,而不会影响调用方的副本。这可以通过在引用类型上使用ref
关键字来更改,此时方法可以将引用指向新的基础对象,并且将影响来电者。
答案 1 :(得分:1)
对于值类型(int
,double
,byte
,char
,...,struct
),参数以值的形式出现,因此保证不会影响该调用模块。
对于string
类型,虽然它是一个引用类型,但它是CLR不可变的,这样你在程序中做的任何事都不会影响原始字符串。
对于其他引用类型(class
),无法保证方法中类的更改。