问题描述
我想将变量分配给null的初始值,并在下一个 if
- else
块中分配其值,但是编译器给出了错误,
I want to assign a variable to an initial value of null, and assign its value in the next if
-else
block, but the compiler is giving an error,
我怎么能做到这一点?
推荐答案
var
变量仍然具有类型-编译器错误消息指出必须在声明期间建立此类型 .
var
variables still have a type - and the compiler error message says this type must be established during the declaration.
可以完成特定的请求(分配初始null值),但我不建议这样做.它在这里没有优势(因为必须仍然指定类型),并且可以被视为使代码的可读性降低:
The specific request (assigning an initial null value) can be done, but I don't recommend it. It doesn't provide an advantage here (as the type must still be specified) and it could be viewed as making the code less readable:
var x = (String)null;
仍是推断类型"的,等同于:
Which is still "type inferred" and equivalent to:
String x = null;
编译器不会接受 var x = null
,因为它不将null与任何类型相关联-甚至不与Object相关联.使用上述方法, var x =(Object)null
会起作用",尽管它的有用性令人怀疑.
The compiler will not accept var x = null
because it doesn't associate the null with any type - not even Object. Using the above approach, var x = (Object)null
would "work" although it is of questionable usefulness.
通常,当我不能正确使用 var
的类型推断时,
Generally, when I can't use var
's type inference correctly then
- 我在一个最好显式声明变量的地方;或
- 我应该重写代码,以便在声明期间分配 valid 值(具有已建立的类型).
- I am at a place where it's best to declare the variable explicitly; or
- I should rewrite the code such that a valid value (with an established type) is assigned during the declaration.
第二种方法可以通过将代码移入方法或函数中来完成.
The second approach can be done by moving code into methods or functions.
这篇关于将C#中的'var'值初始化为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!