我过去几年一直在从事C语言的工作,我已经习惯了在代码中将单一用途的
当我编写一个非常基本的需要方法范围静态值的方法时,我有点惊讶地发现编译器不喜欢我尝试从方法内部定义静态对象。
经过谷歌搜索,证明这在C#中是不可能的。尽管如此,我仍然好奇为什么像下面这样的代码完全被禁止。
static
变量放在使用它们的附近。当我编写一个非常基本的需要方法范围静态值的方法时,我有点惊讶地发现编译器不喜欢我尝试从方法内部定义静态对象。
经过谷歌搜索,证明这在C#中是不可能的。尽管如此,我仍然好奇为什么像下面这样的代码完全被禁止。
public int incrementCounterAndReturn()
{
static int i = 0;
return ++i;
}
诚然,这只是一个可以重新定义实现相同效果的简单示例,但这并不重要。方法作用域内的静态值有其存在和目的。是什么设计决策阻止了在 C# 中实现静态对象?
我们使用的是 C# 5.0 版本,现在是2013年。我只能假设这不可能是因为“那太复杂和难以实现了”,而是出于设计选择。是否有任何内部信息可提供?