将C#中’var’的值初始化为null
我想将一个变量赋值给初始值null,并在下一个if
– else
块中分配它的值,但是编译器给出了一个错误,
必须初始化隐式类型的局部变量。
我怎么能实现这个目标?
var
变量仍然具有类型 – 并且编译器错误消息表明必须在声明期间建立此类型。
可以完成特定请求(分配初始空值),但我不推荐它。 它在这里没有提供优势(因为仍然必须指定类型),并且可以将其视为使代码不易读取:
var x = (String)null;
哪个仍然是“类型推断”,相当于:
String x = null;
编译器不接受var x = null
因为它不会将null与任何类型相关联 – 甚至不是Object。 使用上述方法, var x = (Object)null
将“起作用”,尽管它有用。
通常,当我无法正确使用var
的类型推断时
- 我在一个最好明确声明变量的地方; 要么
- 我应该重写代码,以便在声明期间分配有效值 (具有已建立的类型)。
第二种方法可以通过将代码移动到方法或函数中来完成。
C#的主要好处是var
关键字是为了增强可读性,而不是function性。 从技术上讲, var
关键字允许一些其他解锁(例如使用匿名对象),但这似乎超出了这个问题的范围。 使用var
关键字声明的每个变量都有一个类型。 例如,您将发现以下代码输出“String”。
var myString = ""; Console.Write(myString.GetType().Name);
此外,上面的代码相当于:
String myString = ""; Console.Write(myString.GetType().Name);
var
关键字只是C#的说法“我可以从上下文中找出myString
的类型,所以不要担心指定类型。”
var myVariable = (MyType)null
或MyType myVariable = null
应该有效,因为你给出了C#编译器上下文来确定myVariable
应该是什么类型。
欲获得更多信息: