【发布时间】:2012-02-13 09:56:57
【问题描述】:
这是我正在使用的代码示例:
BaseClass class1;
if (userControl.Key == 100)
{
class1 = new DerivedClass1();
//This does not work, but it seems like it should
class1.PropertyInDerivedClass1 = 7
//This does work, but why should I have to cast something that I just instantiated?
((DerivedClass1)class1).PropertyInDerivedClass1 = 7;
}
else
class1 = new DerivedClass2();
我可以做些什么来更轻松地访问派生类中的属性和方法?
【问题讨论】:
-
根据@DaveShaw 为C#保留关键字msdn.microsoft.com/en-us/library/x53a06bb.aspx的回复
-
是的,你可以。您可以使用派生类类型的变量。
-
您所要求的将需要某种数据流分析,以将转换插入编译器可以确定的是分配给变量的当前值,并使语言更加复杂。当您可以在
if块中拥有一个派生类型的局部变量时,这听起来像任何语言设计人员都不会付出的努力。 -
这不是 Intellisense/IDE 问题;这是一个关于静态类型和运行时多态的交互的问题。
标签: c# .net visual-studio oop inheritance