创建创建可重载另一个类的类(如Excel - Thisworkbook.Worksheets)

问题描述:

在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#中实现这样的对象层次结构...(请原谅,如果这是一个错误的问题)。

您误会了操作员。

你所看到的是在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