使用关键字时如何将基类数据放入子类对象中。我尝试了下面的代码,但它返回数据。 asnull
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的behaivour:
您的代码(简化):
BaseC baseC = new BaseC();
// null: result is a BaseC instance and not DerivedC one
DerivedC result = baseC as DerivedC;
Run Code Online (Sandbox Code Playgroud)
反向代码(可能是您希望看到的):
BaseC baseC = new DerivedC(); // <- Now, DerivedC instance created
// not null: result is in fact a DerivedC instance: new DerivedC()
DerivedC result = baseC as DerivedC;
// not null: DerivedC is inherired from BaseC
// and that's why any DerivedC instances are BaseC instances as well
BaseC result2 = baseC as BaseC;
Run Code Online (Sandbox Code Playgroud)