gpt4 book ai didi

c# - 在基类对象上使用子类方法

转载 作者:行者123 更新时间:2023-11-30 15:07:47 25 4
gpt4 key购买 nike

假设我已经声明了以下类:

class BaseClass{
/* properties, constructors, getters, setters etc. */

public static BaseClass Create(string url){
/*will return, depending on url, a BaseClass or a SubClass object*/
}

public void Method(){
/* some code here */
}
}

class SubClass: BaseClass{
/* other properties, constructors, getters, setters etc. */

new public void Method(){
/* some other code here */
}
}

现在在我的 Main 方法中,我想按照以下方式做一些事情:

BaseClass baseClass = BaseClass.Create(url);
if(baseClass.GetType()==typeof(SubClass)){
baseClass.Method();
}

当然,这里的想法是使用 Method,因为它是在 SubClass 中实现的。这可能是一个愚蠢的问题,但我该怎么做呢?我不能将基类转换为子类,所以我不确定...

编辑

澄清了我的问题。即使 baseClass 被声明为 BaseClass 实例,baseClass is SubClass 也将返回 trueif urlCreate返回一个 SubClass 实例。

最佳答案

看起来您可能正在寻找多态性,但我无法从描述中确定。您尝试做的事情的具体用例是什么?

class BaseClass{

public virtual void Method(){
Console.WriteLine("BaseClass");
}
}

class SubClass : BaseClass{
/* other properties, constructors, getters, setters etc. */

public override void Method(){
Console.WriteLine("SubClass");
}
}

static class Test
{
public void go() {
BaseClass instance = new SubClass();
instance.Method(); // prints "SubClass"
}
}

如果基类有一个实现没有意义,那么declare the class and the method as abstract -- 这会强制派生类覆盖该方法,确保任何实例化的类实例都将具有有效的实现。

关于c# - 在基类对象上使用子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6243234/

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