【问题标题】:C# equivalent of javascript's 'const' [duplicate]C#相当于javascript的'const' [重复]
【发布时间】:2017-08-10 21:34:23
【问题描述】:

是否有与 JS ES6 的“const”等效的 C# 来声明不改变值的局部变量?

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

我发现 ES6 const 有助于使 JS 更易于阅读。就像看到声明为“const”的东西告诉我这是不会改变的东西。同样,声明为“让”的东西告诉我,这有望改变。

【问题讨论】:

  • readonlyconst 是 C# 中最接近的。

标签: javascript c# ecmascript-6


【解决方案1】:

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

但是,您可以使用 readonly 关键字(或等效地,通过声明 read-only auto-implemented property)将类的字段声明为不可变。此类字段只能在构造函数中(重新)分配。

【讨论】:

  • 还有其他例外,比如foreach循环的循环变量。
  • 您能否在答案中为该@Servy 发布一些示例代码? 我不知道循环有不可变的变量。
  • @mjwills – 具体来说,foreach 中的 迭代变量 是不可变的(例如,在 foreach (var n in …) 中,变量 n 在循环体内是不可变的)。同样,using 语句声明的变量也是不可变的。
【解决方案2】:

试试readonly 关键字

Readonly Keyword MSDN

【讨论】:

  • 只读只对类成员有效,对局部变量无效
  • 好点,看起来问题是后来编辑的,没有指定局部变量。
猜你喜欢
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2016-08-03
  • 1970-01-01
  • 2017-02-21
相关资源
最近更新 更多