可能的重复:
C# 的只读(类似“const”)函数参数 https://stackoverflow.com/questions/3826542/read-only-const-like-function-parameters-of-c-sharp
为什么C#中没有const成员方法和const参数? https://stackoverflow.com/questions/4150478/why-there-is-no-const-member-method-in-c-sharp-and-const-parameter
过去使用 C++ 进行编程时,我记得我们可以在方法中创建常量引用/指针参数。
如果我的记忆是正确的,下面的意思是,该方法不能改变引用,并且引用本身是一个常量引用。
C++ 示例
void DisplayData(const string &value) const
{
std::count << value << endl;
}
C# 中是否有与类中的方法等效的方法?
我问的原因是,我试图通过引用传递对象(为了速度),同时不希望任何人改变它。
更新 16/09/2020
现在似乎有in参数修饰符 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/in-parameter-modifier表现出这种行为(本质上,ref readonly
)。简单搜索一下您何时会使用它会得到以下答案:
为什么要在 C# 中使用“in”参数修饰符? https://stackoverflow.com/questions/52820372/why-would-one-ever-use-the-in-parameter-modifier-in-c
原答案
C# 没有对应的东西,有人问过many https://stackoverflow.com/questions/4150478/why-there-is-no-const-member-method-in-c-sharp-and-const-parameter, many https://stackoverflow.com/questions/8236358/const-objects-in-c-sharp-as-parameter, many https://stackoverflow.com/questions/3826542/read-only-const-like-function-parameters-of-c-sharp, many https://stackoverflow.com/questions/3263001/why-const-parameters-are-not-allowed-in-c-sharp以前有过几次。
如果您不希望任何人更改“引用”,或者您可能指的是对象的内容,请确保该类不会公开任何公共设置器或改变该类的方法。如果您无法更改该类,请让它实现一个仅以只读方式公开公开成员的接口,并改为传递接口引用。
如果您的意思是要阻止该方法更改引用,那么默认情况下,如果您“按引用”传递它,则实际上是按值传递引用。该方法尝试更改引用所指向的内容只会影响本地方法副本,而不影响调用者的副本。这可以通过使用来改变ref
引用类型上的关键字,此时该方法can将引用指向一个新的底层对象,并且它will影响呼叫者。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)