2012-05-10 43 views
0

Class1聲明一個變量並對其進行實例化。定義和實例化語句被允許爲類作用域。如何定義和實例化類範圍內的變量,內部解釋

class class1 
{ 
public bool variable = false; 
} 

使用相同的邏輯爲什麼不能Class2實例化變量。爲什麼實例化語句不允許像這樣在類範圍中。

class class2 : class1 
{ 
variable = false; 
} 

我很感興趣,如果在這背後有任何合理的解釋。可能是編譯器以某種特殊的方式來解釋這樣的定義。

+0

我的猜測是變量在class1被構造之前得到初始化。所以class2不能再次初始化變量。 – fgungor

回答

0

從未看到您的第二種情況的問題,但事實上在的情況下您沒有定義變量的類型。

編輯

我想我missuderstood你的問題:

成員variable是基類definiton的一部分。您不能通過任何方法訪問公開類的成員。這就對了。

1

除了內聯初始化之外,類中不允許聲明不包含在類似構造函數,方法或屬性的東西中。

如果要初始化變量別的東西,把它貼在構造函數(這是構造函數是什麼):

public class Class2 : Class1 
{ 
    public Class2() 
    { 
     variable = false; 
    } 
} 

另一個類似的問題:

Statements only in methods, but what about declarations?

總之,只有在課堂範圍內才允許聲明。內聯初始化相當於在構造函數中初始化成員變量 - 我的猜測是這被添加爲語法糖,因爲內聯初始化是針對許多語言的股票和交易。

關於命名的簡要說明,類通常是標題封面。

+0

:)謝謝亞當。但我想明白,爲什麼這樣......有沒有解釋? – neo

+1

合乎邏輯的解釋是,它不是支持這種行爲的設計選擇 - 它可以通過使用構造函數來實現。如果您想了解設計選擇的原因,您需要與Microsoft團隊中負責此項工作的人員交談。 –