使用'as'进行C#强制转换

Iva*_*ono 0 c# inheritance casting list

我有以下代码:

public class BaseClass {}
public class Class1 : BaseClass {}
public class Class2 : BaseClass {}

public class BaseClassList : List<BaseClass> {}
public class Class1List : List<Class1> {}
public class Class2List : List<Class2> {}

    public void Setup()
    {
        BaseClassList b = new BaseClassList();
        b.Add(new BaseClass());
        b.Add(new BaseClass());
        b.Add(new BaseClass());

        var list = from a in b
                   select a;

        Class1List c1 = new Class1List();

        foreach (BaseClass a in b)
        {
            var o = a as Class1;
            if (o != null)
                c1.Add(o);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,当将类型转换为Class1时,o始终为null.问题是什么?

Tar*_*rec 5

问题是a不是Class1对象.就这样.再次仔细阅读您的代码 - 为什么您认为某个BaseClass对象可以被转换为一个派生自它的类?