在过去的几年里,我一直在使用 C 语言,我已经习惯于将单一用途的static
变量放在我的代码中使用它们的位置附近。
在编写一个需要方法范围静态值的非常基本的方法时,我有点惊讶地发现编译器不喜欢我试图从我的方法中定义一个静态对象。
谷歌搜索已验证这在 C# 中是不可能的。不过,我很好奇为什么像下面这样的代码完全不受限制。
public int incrementCounterAndReturn()
{
static int i = 0;
return ++i;
}
当然,这是一个简单的示例,可以针对相同的影响重新定义,但这不是重点。方法范围,静态值有它们的位置和目的。哪些设计决策阻止了在 C# 中实现这样的静态对象?
我们使用的是 C# 版本 5.0,现在是 2013 年。我只能假设这是不可能的,因为设计选择,而不仅仅是因为“这是复杂且难以实现的东西”。有人知道内幕消息吗?