15

在 C# 中,有没有办法将静态变量放入像 VB.Net 这样的方法中?

Static myCollection As Collection
4

5 回答 5

21

为什么 C# 不支持静态方法变量?

问:在 C++ 中,可以编写一个静态方法变量,并拥有一个只能从方法内部访问的变量。C# 不提供此功能。为什么?

A: C# 没有这个特性有两个原因。

首先,通过使用类级别的静态变量可以获得几乎相同的效果,而添加方法静态变量将需要增加复杂性。

其次,当代码被重复调用或从多个线程调用时,方法级别的静态变量有些臭名昭著,而且由于定义在方法中,因此很难找到定义。

-- msdn c# 常见问题解答

于 2009-05-08T15:32:47.230 回答
5

不,没有,但这与在类级别拥有静态变量有何不同?

实际上,如果您查看shared 是如何实现的,它是一个在类上创建静态字段的编译器技巧。

于 2009-05-08T15:33:31.173 回答
3

最接近 VB.NET 的Static是在当前类型中创建一个字段。除此之外,C# 没有等价物。

于 2009-05-08T15:31:10.417 回答
1

不,CLR 不支持这一点,VB.NET 使用编译器技巧来允许它。啊。

于 2009-05-08T15:31:42.020 回答
-6

我很确定 C# 等价物是const:因此:

public const Collection myCollection = new Collection();

我对 VB.NET 不太熟悉,所以我可能会偏离基础,但这将允许您设置一个无法更改的变量。

于 2009-05-08T15:35:42.980 回答