在阅读一些源代码时,知道初始化后变量不会改变,这很有用。 例如,在以下代码示例中:
for (int i = 0; i < Height; ++i)
{
for (int j = 0; j < Width; ++j)
{
int index = i * Width + j; // This variable never changes later. Or will it? [TrollFace]
float myValue = ComputeValue(i, j);
// ...
myArray[index] = myValue;
}
}
对于代码审核者来说,能够告诉他们不要过多关注index
变量会很好,因为它的值永远不会改变。显然你可以在评论中做到这一点,但评论并不总是更新,也不一定是可靠的
在某些语言中,可以使用关键字来确保断言“初始化后该局部变量的值不会改变”。 C#中有这样的关键字吗?
答案 0 :(得分:4)
据我所知,没有这样的功能。有{{1}}关键字,但这适用于类字段,而不是局部变量。
我能想到的唯一解决方案是创建一个包装类,它初始化一个get-only属性。为了便于使用,您可以在基础类型中添加隐式转换运算符。但是这肯定会有一些性能开销,而且可能不值得。
有趣的是,there seems to be a question already讨论了为什么没有这样的功能。