对于C++开发人员来说,它看起来很奇怪 在C++中,我们用来标记参数,const以确保它的状态不会在方法中改变.还有其他C++特定的原因,比如const ref为了传递ref而传递,并确保状态不会被更改.但是为什么我们不能在C#中标记为方法参数const?
为什么我不能像下面那样声明我的方法?
....
static void TestMethod1(const MyClass val)
{}
....
static void TestMethod2(const int val)
{}
....
Run Code Online (Sandbox Code Playgroud) 在过去使用C++编程时,我记得我们可以在方法中创建一个常量引用/指针参数.
如果我的记忆是正确的,则下面的意思是该方法不能改变参考,并且参考本身是一个常量参考.
void DisplayData(const string &value) const
{
std::count << value << endl;
}
Run Code Online (Sandbox Code Playgroud)
C#中是否存在类中方法的等价物?
我问的原因是,我试图通过引用传递一个对象(速度),同时不希望任何人改变它.
我是一名 C++ 高级程序员。我目前正在做一些 Go 编程。我真正想念的唯一功能是 const 限定符。在go中,如果你想修改一个对象,你就传递它的指针。如果您不想修改它,则按值传递它。但是如果结构很大,你应该通过指针传递它,它覆盖了无修改功能。更糟糕的是,您可以按值传递一个对象,但如果它包含一个指针,您实际上可以修改其内容,这会带来可怕的竞争条件危险。某些语言类型(如地图和切片)具有此功能。这发生在一种应该为并发构建的语言中。所以避免修改的问题在 Go 中真的不存在,你应该传递小对象不包含指针的 (您必须知道对象不包含指针)按值,如果它们不会被修改。
使用 const,您可以通过 const 指针传递对象,而不必担心修改。类型安全是关于拥有允许速度并防止与类型相关的错误的契约。执行此操作的另一个功能是 const 限定符。