如何指示 C# 中的局部变量不会更改

本文关键字:局部变量 何指示 指示 | 更新日期: 2023-09-27 18:36:13

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

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

如何指示 C# 中的局部变量不会更改

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

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

有趣的是,似乎已经有一个问题在讨论为什么没有这样的功能。