我应该如何解释这个int初始化?

时间:2013-09-22 10:43:40

标签: c#

我已经为C#编程了几个月了,但直到现在我才遇到过这个问题。这条指令意味着什么?

int a = 1, b;

6 个答案:

答案 0 :(得分:8)

它与:

相同
int a = 1;
int b;

答案 1 :(得分:4)

上面的语句在单个语句中声明了相同数据类型的多个变量。

  

因此声明多个变量的局部变量声明等同于具有相同类型的单个变量的多个声明。

这意味着

int a=1, b;

表示ab都具有相同的数据类型,即int,同时我们使用值a和{{1}初始化变量1有默认的int值,即b

如此等效地你可以把它写成

0

答案 2 :(得分:3)

取决于这些是“本地”(方法变量)还是“字段”(实例变量)。

对于字段,它将a和b声明为Int32;在调用构造函数之前擦除内存(newobj / initobj)时,它们都被初始化为零,然后在构造函数的开头为a赋值1。

对于本地人,它将a和b声明为Int32,并立即将1分配给a。 B没有定义的值。 “明确赋值”的规则意味着不需要具有定义的值。但是,堆栈上的所有值必须具有某些值 - 并且我们可以通过作弊获取该值(例如,在IL中编写实现“out”的方法,但只是取消引用地址)。实际值取决于是否设置了init-locals标志。这不是c#语言功能,但当前编译器确实包含此标志。这意味着在方法开始时擦除本地的存储空间(设置为零)。所以逻辑值将为零,但出于不同的原因。没有要求发生这种情况 - 因此它完全是一个实现细节。

答案 3 :(得分:2)

它定义了整数“a”和“b”,将值1赋予

答案 4 :(得分:1)

a和b是整数

和a的值是一。 b还没有价值

答案 5 :(得分:1)

a声明并初始化为零,而b刚刚声明。