gpt4 book ai didi

c# - 向下转型到哪个对象

转载 作者:行者123 更新时间:2023-11-30 19:27:49 25 4
gpt4 key购买 nike

执行以下代码:

ClassA myClass = new ClassA()
myClass.varA = "Teststring"

BaseClassB cls = new BaseClassB()
cls.methodA(myClass)

我有以下类(class)

class BaseClassA
{

}

class ClassA:BaseClass
{
string varA;
}

class ClassB:BaseClass
{
string varB;
}

然后一种方法

class BaseClassB
{
public void methodA(BaseClassA myVar)
{
// How can I display varA that is given with myClass (which is myVar)?
// It should also be able to display varB when an object of type ClassB is given
// So I have to make a downcast here but I don't know if I have to downcast to ClassA or ClassB
}
}

我知道这是主要知识,但有人可以帮助我吗?

最佳答案

您可能想要重组您的代码,而不是将代码放在您指定的位置。基类的全部意义在于您可以将 ClassA 和 ClassB 视为相同。如果您想以不同的方式对待它们,那么可以使用带有 ClassA 和 ClassB 对象的重载...

class BaseClassB
{
public void methodA(ClassB myVar)
{
Console.WriteLine(myVar.varB);
methodCommon(myVar);
}
public void methodA(ClassA myVar)
{
Console.WriteLine(myVar.varA);
methodCommon(myVar);
}
public void methodCommon(BaseClassA myVar)
{
}
}

如果你真的需要一种方法,那么你可以这样做:

public void methodA(BaseClassA myVar)
{
if (myVar is ClassA)
{
//Its of type ClassA so you can do whatever you want with it knowing it is a ClassA.
}
else if (myVar is ClassB)
{
//Its of type ClassB so you can do whatever you want with it knowing it is a ClassB.
}
else
{
//Its not either.
}
}

关于c# - 向下转型到哪个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17568383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com