如何在使用关键字“as”时将基类数据获取到子类对象中。我尝试了下面的代码,但它返回空数据。“as”关键字在c#中返回空数据
class BaseC
{
public int BaseId { get; set; }
public string BaseName { get; set; }
}
class DerivedC: BaseC
{
public int DerivedId { get; set; }
public string DerivedName { get; set; }
}
class Program
{
static void Main(string[] args)
{
BaseC baseC = new BaseC();
baseC.BaseId = 1;
baseC.BaseName = "base class name ";
var derivedC = baseC as DerivedC;
}
}
由于您创建的纯粹的'Basec'不是'DerivedC',所以'as'将返回'null,因为它不能被转换。在C#中不允许向下转换。你想达到什么目的? – 2014-09-26 14:02:47
一个'BaseC'对象并不总是一个'DerivedC'对象(另一种方式是)。您只创建了一个“BaseC”对象而不是“DerivedC”对象。你试图做一个缩小的演员(BaseC到DerivedC),而只有一个扩展演员才能工作(DerivedC到BaseC)。 – Styxxy 2014-09-26 14:04:03
派生的C继承自BaseC,并且您想将BaseC视为DeviedC ...查看问题?另外,为什么使用var? var是一个未定义的类型,例如在linq中使用它 – user28470 2014-09-26 14:04:55