小编Max*_*eth的帖子

将隐含的派生类型的对象放入更多派生类型的列表中

在这种情况下,我有一个更多派生类型的列表和另一个派生类型较少的列表.为了避免派生较少的列表中的任意混乱,我写了一个foreach语句,检查列表中的每个元素是否属于更多派生类型,如果是,则将其移动到该元素到更多派生列表.这在这里演示:

namespace Test
{
    class Tester
    {
        static void Method()
        {
            List<A> ListA = new List<A>();
            List<B> ListB = new List<B>();
            //populate the lists
            foreach (A a in ListA)
                if (a.GetType().ToString()=="Test.B")
                {
                    ListA.Remove(a);
                    ListB.Add(a);
                }
            //Do stuff with the lists
        }
    }
    class A
    {
        //stuff in class A
    }
    class B : A
    {
        //stuff in class B
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个编译器错误,说A类型的对象不能隐式转换为类型B,因为编译器不够聪明,无法实现转换的实例被测试为B类型为正,所以不应该首先是转换.有没有办法绕过这个问题?

c# inheritance

2
推荐指数
1
解决办法
74
查看次数

标签 统计

c# ×1

inheritance ×1