c#中的“as”关键字返回空数据

tea*_* sg 0 c# null

使用关键字时如何将基类数据放入子类对象中。我尝试了下面的代码,但它返回数据。 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)

Dmi*_*nko 5

这是正确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)