C#相当于javascript';s';常数';

C#相当于javascript';s';常数';,javascript,c#,ecmascript-6,Javascript,C#,Ecmascript 6,在声明不改变值的局部变量时,是否有JSES6的“const”的C#等价物 我知道C#中有一个'const'关键字,但这不是一回事,因为它的值只能在编译时设置,不能在运行时设置 我发现ES6常量有助于使JS更易于阅读。就像看到一些声明为“const”的东西告诉我这是一个不变的东西。同样,一些声明为“let”的东西告诉我,这一点预计会改变 尝试readonly关键字 C#没有一种方法将局部变量声明为不可变的(当然,您可以在查询理解中这样做,但这并不重要) 但是,您可以使用关键字(或者等效地,通过声明

在声明不改变值的局部变量时,是否有JSES6的“const”的C#等价物

我知道C#中有一个'const'关键字,但这不是一回事,因为它的值只能在编译时设置,不能在运行时设置


我发现ES6常量有助于使JS更易于阅读。就像看到一些声明为“const”的东西告诉我这是一个不变的东西。同样,一些声明为“let”的东西告诉我,这一点预计会改变

尝试
readonly
关键字

C#没有一种方法将局部变量声明为不可变的(当然,您可以在查询理解中这样做,但这并不重要)


但是,您可以使用关键字(或者等效地,通过声明)将类的字段声明为不可变的。此类字段只能在构造函数中(重新)赋值。

readonly
const
是C#中最接近的字段。readonly对类成员有效,而不是局部变量很好,看起来问题是事后编辑的,没有指定局部变量。还有其他例外,例如
foreach
循环的循环变量。你能在回答中给出@Servy的一些示例代码吗?我不知道循环有不可变的变量。@mjwills–具体来说,
foreach
中的迭代变量是不可变的(例如在
foreach(var n in…
)中,变量n在循环体中是不可变的)。类似地,由
using
语句声明的变量也是不可变的。