我刚刚遇到了一些我不理解的代码。它实际上是
Class c = new BaseClass() as Class;
我不理解这样做的优势,所以我创建了自己的控制台应用程序来看看它做了什么。
namespace Initialize
{
class Program
{
static void Main(string[] args)
{
Demo demo = new Demo();
demo.BaseProp = "";
demo.DemoProp = "";
BaseDemo baseDemo = new BaseDemo();
baseDemo.BaseProp = "";
BaseDemo baseDemo2 = new Demo();
baseDemo2.BaseProp = "";
BaseDemo baseDemo3 = new Demo() as BaseDemo;
baseDemo3.BaseProp = "";
//fails runtime
//Demo demo2 = (Demo)baseDemo;
Demo demo3 = (Demo)baseDemo2;
demo3.BaseProp = "";
demo3.DemoProp = "";
Demo demo4 = (Demo)baseDemo3;
demo4.BaseProp = "";
demo4.DemoProp = "";
}
}
class BaseDemo
{
public string BaseProp { get; set; }
}
class Demo : BaseDemo
{
public string DemoProp { get; set; }
}
}
我只能假设它在多态方面提供了一些额外的帮助,但我无法弄清楚如何使用它或者找到任何区别:
BaseDemo baseDemo2 = new Demo();
并且
BaseDemo baseDemo3 = new Demo() as BaseDemo;