2013-07-17 94 views
1

我在想一本關於C#的書中的一句話,我正在閱讀。這句話是:「初始化爲全0的值類型」是什麼意思?

'初始化爲全0的值類型'。

大概我不明白,因爲我不是母語的人。

在我對語言的理解中,這意味着變量在初始化時有多個值?這對我來說並不合適。你能幫我理解這是什麼意思嗎?

+1

所有位成爲'0' –

回答

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 
+0

這僅適用於域,不是本地人。另外,引用類型也是默認初始化的。 –

+0

這句話是正確的,因爲內存中的基礎值(在'DateTime'的情況下,自顯示值爲'c'的日期開始打勾)將爲零。用於顯示「DateTime」的+1,其中內存值的值確實爲0,即使它不代表我們將解釋爲「零」的值。 –

4

考慮這個值類型:

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

「全0」表示X = 0且Y = 0。

更新:我剛剛發現這個例子用於MSDN documentation for struct。他們拋出一個構造函數。

+1

我覺得這個迴應有點不準確。內存中的零不一定意味着*「零」,因爲它正好適用於「int」變量。然而,這本書中的句子可能指的是記憶中的零。 –

0

也許它是關於默認值值類型,如bytedoubleintsbyteshortuintushortulong

例如,當你說這個;

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

0

最有可能的作者意味着默認值值類型實例中存在的每種類型(對於每種類型自然可能不同)。

爲了實現這一點可以做到,如:

MyStruct struc = default(MyStruct); 
0

值類型的變量佔據一定數量的存儲器字節數。該類型被初始化爲零的表示意味着在變量初始化時所有這些字節都被設置爲值。

對於許多(如果不是全部的話)值類型(即原始數字類型,結構...),如this question中概述的,這似乎是正確的。

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 
    } 
} 
+0

不要忘記這是'int?(可空)'錯誤'。我的意思是默認設置爲空 –

+0

是的。因爲它們是框值類型,所以可以爲空的引用類型。 –

+0

@NickGotch:[這個問題的答案](http://stackoverflow.com/questions/3149173/are-nullable-types-reference-types)得出相反的結論。 –