创建一个类来创建另一个可以被重载的类(比如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#中实现这样的对象层次结构…(如果这是一个错误的问题,请原谅)
你误解了运算符。
你看到的是在Worksheets
类上定义的索引操作符。
在c#中,这将被称为a.b[1]
或a.b["2"]
。
你可以这样定义它:
public SomeType this[int index] { get { ... } }
public SomeType this[string index] { get { ... } }