相关疑难解决方法(0)

如何在C#中声明不可变变量(值)?

在Scala中我可以写(并且它意味着它在C#中意味着完全相同)

var v = 1;
v = 2;
Run Code Online (Sandbox Code Playgroud)

但是不能写(好吧,我当然可以编写,但实际上虽然语法正确但无法编译)

val v = 1;
v = 2;
Run Code Online (Sandbox Code Playgroud)

分号不是必需的,但可以在Scala中自愿使用,所以我决定将它们包含在内,让代码更紧密地对应C#.val表示一个不可变值,一种只能分配一次的变量,但不太可能const用运行时表达式的结果初始化c#,不太可能readonly在代码中的任何地方引入C#字段var变量可以和不太可能的C#不可变类型不受参考替换的影响,而不仅仅是对引用对象的修改.

我喜欢C#在每种新版本语言中引入越来越多功能性编码糖果的方式,但却错过了这一点(可以说是最简单也是最重要的).在大多数情况下,我只将值赋给我的变量一次,因此重新赋值通常是不会发生的事情,这意味着一个不期望的事情并且可能以这种方式导致错误.也许,我可能只是不知道这样的功能?我不介意这样的声明看起来有点笨拙(也许有些F#导入,无论它们在C#代码中看起来如何).

更新:由于现在看来确实没有这样的功能(2017年3月,C#语言版本7.0),并且正如其他人所建议的那样,我在C#语言设计GitHub存储库中提交了一个问题.

.net c# syntax immutability

3
推荐指数
1
解决办法
782
查看次数

标签 统计

.net ×1

c# ×1

immutability ×1

syntax ×1