将C#中'var'的值初始化为null

Nik*_*van 14 c# var

我想给一个变量赋值为null的初始值,并在接下来的分配其价值if- else块,但编译器给了一个错误,

必须初始化隐式类型的局部变量.

我怎么能实现这个目标?

use*_*674 34

var变量仍然具有类型 - 并且编译器错误消息表明必须在声明期间建立此类型.

可以完成特定请求(分配初始空值),但我不推荐它.它在这里没有提供优势(因为仍然必须指定类型),并且可以将其视为使代码不易读取:

var x = (String)null;
Run Code Online (Sandbox Code Playgroud)

哪个仍然是"类型推断",相当于:

String x = null;
Run Code Online (Sandbox Code Playgroud)

编译器不会接受,var x = null因为它不会将null与任何类型相关联 - 甚至不是Object.使用上述方法,var x = (Object)null虽然有用,但仍然"有效".

一般来说,当我无法var正确使用类型推断时

  1. 我在一个最好明确声明变量的地方; 要么
  2. 我应该重写代码,以便在声明期间分配有效值(具有已建立的类型).

第二种方法可以通过将代码移动到方法或函数中来完成.