2013-03-25 126 views
1

在Excel對象模型「的ThisWorkbook」是具有「工作表」類在它的一類並且可以是重載與索引或表格名稱。此外,'工作表'類也具有一些可以在調用構造函數(默認)時調用的屬性/方法。創建創建可重載另一個類的類(如Excel - Thisworkbook.Worksheets)

  • 例如, MsgBox ThisWorkbook.Worksheets(1).Name '< - by(int)
  • E.g. MsgBox ThisWorkbook.Worksheets(「Sheet1」)。Name '< - by(string)
  • E.g. MSGBOX Thisworkbook.Worksheets.Count「< - 」 count屬性

我怎樣才能在C#有另一個類,並可以被重載創建這樣的課嗎? 我曾嘗試創建第二類在第一類中的公共變量,但我只能調用默認的構造函數(或其他 - 但只是一次一個)

class A 
{ 
    public B b = new B(); // <-- this is 1st constructor but how to overload ? 
} 

class B 
{ 
    public B() // Default Constructor 
    { 
    } 
    public B(int i) // Constructor 2 
    { 
    } 
    public B(string s) // Constructor 3 
    { 
    } 
    public int Count // Property 
    { 
     get { return 0; } 
    } 
} 

//------------------------------------------------------------ 

class Main() 
{ 

    A a = new A(); 
    a.b.Count(); // <-- THIS WORKS 
    // a.b(1).Name; <-- HOW TO, USING THE SAME CLASS? 
    // a.b("A").Name; <-- HOW TO, USING THE SAME CLASS? 
} 

我知道,我還沒有創建一個對象數組-1或本例中可以返回的「A」,但我只是需要這個概念(你是對的?)。我也看到了一些使用List的例子,但我真的很想知道如何在C#中實現這樣的對象層次結構...(請原諒,如果這是一個錯誤的問題)。

回答

2

您誤會了操作員。

你所看到的是在Worksheets類中定義的索引操作符
在C#中,這將被稱爲a.b[1]a.b["2"]

你定義它是這樣的:

public SomeType this[int index] { get { ... } } 
public SomeType this[string index] { get { ... } } 
+0

謝謝你,幫我 – 2013-03-28 12:18:32