int a,b = 0 和 int a=0, int b = 0 之间的区别

Difference between int a,b = 0 and int a=0, int b = 0

下面两个代码块有区别吗?

int a, b, c  = 0;

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

是完全一样还是有什么不同?

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

public void AMethod()
{
    int a;
}

不会初始化您的变量,这不是 class 字段,您不能使用此变量,直到它在此方法中获得它的值。

如果您有这样的 class 定义:

class A
{
    int a;
}

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

对于您的第一个代码块,int a, b, c = 0;,您没有初始化原始类型。你不能使用 a 和 b,直到它被分配一些东西,如果 a = default(int) 或只是 a = 0 事件。直到第一次赋值,你会得到一个编译错误,变量必须在第一次使用前赋值。

现在,如果您比较 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);)。