【发布时间】:2016-02-26 04:05:26
【问题描述】:
在阅读一些源代码时知道初始化后变量不会改变会很有用。 例如在以下代码示例中:
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 变量,那就太好了,因为它的值永远不会改变。显然你可以在评论中做到这一点,但 cmets 并不总是更新,也不一定可靠。
在某些语言中,可以使用关键字来确保断言“此局部变量的值在初始化后不会改变”。 C#中有这样的关键字吗?
【问题讨论】:
-
readonly呢? -
你的意思是像 C 语言中的
static? -
@Olivarsham
readonly仅用于全局变量 -
@Ian 不,我的意思是像
const。 -
@JohnPeters: 变量生命周期确实不是一个很难的概念,理解其他目的很重要(例如循环内的 lambda 捕获是访问同一个变量,还是为每个变量创建一个新变量)实例)
标签: c# constants local-variables