【问题标题】:Choose between datatypes and call matching methods?在数据类型和调用匹配方法之间进行选择?
【发布时间】:2009-06-23 20:10:34
【问题描述】:

这是我想要做的:

if (a==true) 
{
    dbA objectInstance = new dbA();
}
else
{
    dbB objectInstance = new dbB();
}

objectInstance.Name = "New name";

我得到“名称 objectInstance 在当前上下文中不存在”,我假设是因为 def 发生在条件内部。

必须有更好的模式来做到这一点——我应该让 dbA 和 dbB 从同一个类继承吗?

【问题讨论】:

    标签: c# oop inheritance


    【解决方案1】:

    是的,dbA 和 dbB 需要一个公共基类或接口,并且该基类或接口需要将 Name 属性作为其公共合同的一部分。

    那么你可以这样做:

    SomeBase objectInstance;
    
    if (a==true) 
    {
        objectInstance = new dbA();
    }
    else
    {
        objectInstance = new dbB();
    }
    
    objectInstance.Name = "New name";
    

    话虽如此,我认为接口是您最好的选择,除非这些类型已经共享一个基类。

    【讨论】:

    • 你是对的!我不在编译器附近,所以我不记得编译器是否会抱怨未分配的变量。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多