int a,b = 0和int a = 0之间的差异,int b = 0

时间:2015-01-21 13:29:24

标签: c# variables

以下两个代码块之间有区别吗?

int a, b, c  = 0;

int a = 0; int b = 0; int c = 0;

那是完全相同还是有区别?

2 个答案:

答案 0 :(得分:3)

对于您的第一个代码块int a, b, c = 0;,您没有初始化基元类型。在为a = default(int)a = 0分配内容之前,您不能使用a和b。在第一次分配之前,您将收到编译错误,必须在首次使用之前分配该变量。

现在,如果您要比较int a = 0, b = 0, c = 0int a = 0; int b = 0; int c = 0;,那么这些是相同的。这两个陈述的IL都是相同的:

IL_0001:  ldc.i4.0    
IL_0002:  stloc.0     // a
IL_0003:  ldc.i4.0    
IL_0004:  stloc.1     // b
IL_0005:  ldc.i4.0    
IL_0006:  stloc.2     // c

分配default值而不是0(即:int a = default(int);)也没有区别。

答案 1 :(得分:2)

没有。默认情况下这不一样。

public void AMethod()
{
    int a;
}

没有初始化你的变量,这不是一个类字段,你不能使用这个变量,直到它在这个方法中得到它的值。

如果你有这样的课程定义:

class A
{
    int a;
}

然后,在创建A对象期间,a字段将在内部使用default(int)值进行初始化,即0