创建一个类来创建另一个可以被重载的类(比如excel - Thisworkbook.Worksheets)

本文关键字:创建 比如 excel Worksheets Thisworkbook 重载 一个 另一个 | 更新日期: 2023-09-27 18:05:40

在Excel对象模型'Thisworkbook'是一个类,它有'工作表'类,可以重载索引或表名。此外,'Worksheets'类也有一些属性/方法,可以使用/不调用构造函数(默认)来调用。

  • 。对话框ThisWorkbook.Worksheets(1)。Name '<——by (int)
  • 。对话框ThisWorkbook.Worksheets("Sheet1")。Name '<- by (string)
  • 。Msgbox Thisworkbook.Worksheets.Count '<- 'count property

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

创建一个类来创建另一个可以被重载的类(比如excel - Thisworkbook.Worksheets)

你误解了运算符。

你看到的是在Worksheets类上定义的索引操作符
在c#中,这将被称为a.b[1]a.b["2"]

你可以这样定义它:

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