什么值'值类型初始化为所有0'意思?

时间:2013-07-17 14:46:31

标签: c# initialization

我想知道一本关于C#我正在阅读的书中的一句话。这句话是:

  

'初始化为全0'的值类型。

可能我不明白,因为我不是母语人士。

在我对语言的理解中,这意味着变量在初始化时具有多个值?这对我来说真的没有意义。你能帮我理解这意味着什么吗?

6 个答案:

答案 0 :(得分:4)

考虑这个值类型:

public struct Point
{
   public int X;
   public int Y;
}

“全0”在这里表示X = 0且Y = 0。

更新:我刚刚发现此示例在MSDN documentation for struct中使用。他们投入了一个构造函数。

答案 1 :(得分:1)

我认为这句话没有正确制定。 我想作者的意思是,或者应该已经写过,在声明值类型时,它会被初始化为默认值。 如果是整数(值类型),则默认值为0.

例如

public struct Test
{
   public int a;
   public Decimal b;
   public DateTime c;

   public void Output(){

      Console.WriteLine ("a: " + a);
      Console.WriteLine ("b: " + b);
      Console.WriteLine ("c: " + c);

   }
}

var t = new Test();
t.Output();

将显示:

a: 0
b: 0
c: 01/01/0001 0:00:00

答案 2 :(得分:0)

可能是关于bytedoubleintsbyteshort等值类型的默认值uintushortulong

例如,当你这样说时;

int i = new int();

i初始化为0.

检查Default Values Table (C# Reference)

它也可以在结构类型中使用值类型,如;

public struct MyStruct
{
   public int X;
   public short Y;
   public double Z;
}

XYZ的值为0

答案 3 :(得分:0)

最有可能的作者意味着值类型实例中存在的每种类型的默认值(对于每种类型,它自然可能不同)。

要实现这一目标,您可以这样做:

MyStruct struc = default(MyStruct);

答案 4 :(得分:0)

值类型的变量占用内存中的特定字节数。此类型初始化为零的语句表示在初始化变量时所有这些字节都设置为值 0

对于许多(如果不是全部)值类型(即原始数字类型,结构,......)似乎都是如此,如this question中所述。

答案 5 :(得分:0)

值类型是非引用类型,例如结构或整数。通过说它“初始化为全零”意味着如果你没有将它设置为某种东西,它将被自动初始化为零值。

public class Foo
{
    public int  _foo;
    public int? _bar;

    public void Output()
    {
        Console.WriteLine(this._foo); // Outputs: 0
        Console.WriteLine(this._bar.HasValue ? "not null" : "null"); // Outputs: null
    }
}