2013-03-24 92 views
4

我是新來的Stackoverflow & 希望成員會原諒我,如果我問一個錯誤的問題。 我剛開始學習C#和類。我想到的一個非常基本的問題是如何創建我的類的對象模型(層次結構)。讓我解釋一下:創建自己的對象模型(如Excel VBA的)

可以說,我有一個類叫PEX。當我實例化這個類它應該包含一些屬性,&另一個類稱爲的Windows方法。現在,Windows還包含一些方法&財產&另一個類窗口

級Windows &窗口不僅要通過PEX類是直接而訪問。

Windows將返回所有窗口實例....基本上像Excel對象模型。

我應該可以做foreach(PEX.Windows中的窗口窗口){...}和其他類似的東西...我也閱讀繼承,但不能得到這個對象模型到位。

public class PEX 
{ 
    public _Windows Windows; 

    public PEX() 
    { 
     Windows = new _Windows(); 
    } 
} 

public class _Windows 
{ 
    public _Window Window; 
    private int _count; 

    public _Windows() 
    { 
     Window = new _Window(); 
     _count = 10; 
    } 

    public int Count 
    { 
     get { return _count; } 
    }  
} 

public class _Window 
{ 

    private string _title; 

    public _Window() 
    { 
     _title = "Roshan"; 
    } 

    public string Title 
    { 
     get { return _title; } 
    } 
} 
+0

你嘗試過什麼?你是否試圖編寫一些代碼,或者你對繼承和oop的概念完全陌生? (是的,就目前而言,我認爲這是一個「錯誤」的問題,但至少你承認它可能是一個,這是一個正確的方向的巨大飛躍:)) – antonijn 2013-03-24 09:40:27

+0

我已經放置了什麼我已經盡力了,感謝 – 2013-03-24 09:48:03

+0

好吧,這很好:) – antonijn 2013-03-24 09:52:19

回答

3

你所描述的通常被稱爲​​。這是父類負責創建子類的地方。此外,您可能希望避免使用Window作爲類名稱。這是一個簡單的例子,其中一個類有一個嵌套類。

public class PEX 
{ 
public List<PexWindow> Windows { get; set; }//list of windows you can foreach on 
public PEX() 
{ 
    Windows = new List<PexWindow>();//constructor to make sure the list can be worked with 
} 

private class PexWindow 
{ 
    public int Param { get; set; } 
    public string Description { get; set; } 
} 
} 
+0

很好的回答,但在宣佈'Windows'屬性作爲'名單<>'*力量*是有問題的,視情況而定。因爲它不僅允許'foreach'迭代,還可以''將新的'PexWindow'實例添加到集合中,這可能會也可能不需要。 – stakx 2013-03-24 09:46:56

+1

@stakx - 這是一個有效的觀點。有一種缺乏具體的細節,這就是爲什麼我選擇將它作爲「List」(可通過​​當前的「PEX」實例公開訪問)的原因。也許一個「私有的IEnumerable」或者等價的東西可能更合適,我想這實際上只取決於當時的規範和實現。 – 2013-03-24 10:38:33