如何表明C#中的局部变量不会改变?

时间:2016-02-26 04:05:26

标签: c# constants local-variables

在阅读一些源代码时,知道初始化后变量不会改变,这很有用。 例如,在以下代码示例中:

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#中有这样的关键字吗?

1 个答案:

答案 0 :(得分:4)

据我所知,没有这样的功能。有{{1}}关键字,但这适用于类字段,而不是局部变量。

我能想到的唯一解决方案是创建一个包装类,它初始化一个get-only属性。为了便于使用,您可以在基础类型中添加隐式转换运算符。但是这肯定会有一些性能开销,而且可能不值得。

有趣的是,there seems to be a question already讨论了为什么没有这样的功能。