0

我有一个abstract class由另一个类继承的,如下所示:

public abstract class Employee
{
        public string name{ get; set; }
        public string age { get; set; }
}

public class OtherEmployee : Employee
    {
        public OtherEmployee()
        {
        }

        public string specialField{ get; set; }
    }

这就是我正在做的事情,但不知何故,没有完成它:

Employee otherEmployee= new OtherEmployee();
otherEmployee.specialField = "somevalue";

我无法访问specialField,而 的所有属性Employee都可以访问。我知道这是一个微不足道的问题,但我在这里遇到了障碍..

4

3 回答 3

5

Employee不知道specialField,只知道OtherEmployee。您需要将其转换为正确的类以使用specialField.

Employee otherEmployee = new OtherEmployee();

这不是给你一个,OtherEmployee而是一个Employee。为了能够使用specialField做这样的事情:

(otherEmployee as OtherEmployee).specialField = yourValue;
于 2013-11-08T08:39:09.253 回答
2

您将无权访问,specialField因为该对象是使用基类引用创建的。它将无权访问 Child 类属性。

尽管对象是用子类实例化的,但引用仍然指向基类。所以属性/骨架将是基类,它不会为子类结构分配内存。

于 2013-11-08T08:39:39.637 回答
0

您必须以这种方式编写,因为您将 otheremployee 变量指定为 Employee Type,因此它不知道特殊字段。所以:

(otherEmployee as OtherEmployee).specialField = "somevalue";
于 2013-11-08T08:41:51.120 回答