相关疑难解决方法(0)

为什么C#中不允许使用const参数?

对于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# language-agnostic language-design

98
推荐指数
5
解决办法
3万
查看次数

C#中的Const函数参数

可能重复:
C#的只读("const"式)函数参数
为什么C#和const参数中没有const成员方法?

在过去使用C++编程时,我记得我们可以在方法中创建一个常量引用/指针参数.

如果我的记忆是正确的,则下面的意思是该方法不能改变参考,并且参考本身是一个常量参考.

C++示例

void DisplayData(const string &value) const
{
   std::count << value << endl;
}
Run Code Online (Sandbox Code Playgroud)

C#中是否存在类中方法的等价物?

我问的原因是,我试图通过引用传递一个对象(速度),同时不希望任何人改变它.

c#

9
推荐指数
1
解决办法
2万
查看次数

Go 没有 const 限定符的基本原理是什么?

我是一名 C++ 高级程序员。我目前正在做一些 Go 编程。我真正想念的唯一功能是 const 限定符。在go中,如果你想修改一个对象,你就传递它的指针。如果您不想修改它,则按值传递它。但是如果结构很大,你应该通过指针传递它,它覆盖了无修改功能。更糟糕的是,您可以按值传递一个对象,但如果它包含一个指针,您实际上可以修改其内容,这会带来可怕的竞争条件危险。某些语言类型(如地图和切片)具有此功能。这发生在一种应该为并发构建的语言中。所以避免修改的问题在 Go 中真的不存在,你应该传递小对象不包含指针的 (您必须知道对象不包含指针)按值,如果它们不会被修改。

使用 const,您可以通过 const 指针传递对象,而不必担心修改。类型安全是关于拥有允许速度并防止与类型相关的错误的契约。执行此操作的另一个功能是 const 限定符。

go

9
推荐指数
2
解决办法
732
查看次数

标签 统计

c# ×2

go ×1

language-agnostic ×1

language-design ×1