我想知道我目前正在阅读的一本关于 C# 的书中的一句话。这句话是:
'初始化为全 0' 的值类型。
可能我不明白,因为我不是母语人士。
在我对语言的理解中,这是否意味着变量在初始化时具有多个值?这对我来说真的没有意义。你能帮我理解这意味着什么吗?
我想知道我目前正在阅读的一本关于 C# 的书中的一句话。这句话是:
'初始化为全 0' 的值类型。
可能我不明白,因为我不是母语人士。
在我对语言的理解中,这是否意味着变量在初始化时具有多个值?这对我来说真的没有意义。你能帮我理解这意味着什么吗?
考虑这个值类型:
public struct Point
{
public int X;
public int Y;
}
这里的“全 0”表示 X = 0 和 Y = 0。
更新:我刚刚发现这个例子在MSDN 文档中用于 struct。他们抛出一个构造函数。
我认为这句话的表述不正确。我猜作者的意思是,或者应该写,一个值类型在声明时被初始化为其默认值。如果是整数(这是一种值类型),则默认值为 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
值类型是非引用类型,例如结构或整数。通过说它“初始化为全零”,这意味着如果您不将其设置为某个值,它将自动初始化为零值。
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
}
}
可能是关于值类型的默认值byte
,如, double
, int
, sbyte
, short
, uint
, ushort
, ulong
。
例如,当您这样说时;
int i = new int();
i
初始化为0.
查看Default Values Table (C# Reference)
它也可以在结构类型中使用值类型,例如;
public struct MyStruct
{
public int X;
public short Y;
public double Z;
}
和的值X
是。Y
Z
0
最有可能作者的意思是值类型实例中存在的每种类型的默认值(每种类型自然可能不同)。
为此,您可以这样做:
MyStruct struc = default(MyStruct);
值类型的变量在内存中占用一定数量的字节。这种类型被初始化为零的声明意味着所有这些字节在变量初始化时都设置为值0。
这对于许多(如果不是全部)值类型(即原始数字类型、结构......)来说似乎是正确的,如本问题所述。