我刚才碰到一些我不明白的代码。这是有效的为什么使用as关键字初始化一个对象
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;
因为我正在努力思考为什么这样做了..让我把它扔在那里:我们有这样的随机废话,在我们的(继承)代码库中没有任何押韵或理由。如果这里没有真正的意图,我不会感到惊讶,只是缺乏理解。 –
正如所写的,Demo d = new BaseDemo()为Demo;'保证等价于'Demo d = null;'您可能缺少/误解了代码的某些部分,或者开发人员构建了一个代码为零工作的希望。 – dasblinkenlight