是否可以将"var"作为全局变量

dif*_*ous 6 c#

我注意到c#中的全局变量还有其他线程.例如整数,字符串等

public static int;
Run Code Online (Sandbox Code Playgroud)

但是我需要使用另一个线程没有提及的"var"

public static var;
Run Code Online (Sandbox Code Playgroud)

似乎不起作用.

所以我要问的是在c#中可以将"var"作为全局变量吗?

mel*_*dev 6

不,因为var本身不是一个类型,它只是采用赋值右侧的任何表达式的形式:

var num = 1;
Run Code Online (Sandbox Code Playgroud)

是相同的:

int num = 1;
Run Code Online (Sandbox Code Playgroud)

在声明作用于方法之外的变量时,需要使用完整类型指示符:

public static int num = 1;
Run Code Online (Sandbox Code Playgroud)

要么

public static int Num {get;set;}
Run Code Online (Sandbox Code Playgroud)

等等


ole*_*sii 6

C#规范(第26.1节)内容如下:

[`var is]一个隐式类型的局部变量声明......

它更进一步:

隐式类型的局部变量声明中的局部变量声明符受以下限制:

  • 声明者必须包含初始化程序.
  • 初始值设定项必须是表达式.
  • 初始化表达式必须具有不能为null类型的编译时类型.
  • 局部变量声明不能包含多个声明符.
  • 初始值设定项不能引用声明的变量本身

所以不,你不能这样做.此外,我建议不要考虑全局变量.

语言不支持全局变量.您可以在public static字段中找到替代方案,但这会泄漏对象状态并破坏封装.