有很多方法可以初始化变量,例如string varName;
等等。但var appWindow = new AppWindow();
和AppWindow appWindow = new AppWindow();
它们是一样的吗?
任何人都可以向我解释原因,因为我对c#是陌生的。
谢谢
答案 0 :(得分:0)
两个代码都是等价的,两者的IL代码都是相同的。这是一个示例,用于演示两者的IL代码是相似的:
private static void mycompareMethod()
{
var str1 = new String(new char[10]);
string str2 = new String(new char[10]);
}
IL输出:
{
.method private hidebysig static void mycompareMethod() cil managed
.maxstack 2
.locals init ([0] string str1,
[1] string str2)
IL_0000: nop
IL_0001: ldc.i4.s 9
IL_0003: newarr [mscorlib]System.Char
IL_0008: newobj instance void [mscorlib]System.String::.ctor(char[])
IL_000d: stloc.0
IL_000e: ldc.i4.s 9
IL_0010: newarr [mscorlib]System.Char
IL_0015: newobj instance void [mscorlib]System.String::.ctor(char[])
IL_001a: stloc.1
IL_001b: ret
} // end of method Program::mycompareMethod
答案 1 :(得分:0)
它是一样的,但你不能以同样的方式使用它们。
当类型明显并且立即初始化变量时使用的第一个var appWindow = new AppWindow();
。
AppWindow appWindow; //using var you will get compile error
if(true)
appWindow = _GetFromAnotherMethod();
else
appWindow = new AppWindow();