我有一个 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 可以访问。我知道这是一个微不足道的问题,但我在这里遇到了障碍。

有帮助吗?

解决方案

Employee 不知道 specialField, , 只要 OtherEmployee 做。您需要将其投放到合适的课程中才能使用 specialField.

Employee otherEmployee = new OtherEmployee();

这不会给你一个 OtherEmployee 但是 Employee. 。能够使用 specialField 做这样的事情:

(otherEmployee as OtherEmployee).specialField = yourValue;

其他提示

您将无法访问 specialField 因为该对象是用基类引用创建的。它将无法访问子类属性。

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

您必须以这种方式写入BeaCause您的Daeclare其他Employee变量为员工类型,因此它不了解特殊字段。所以:

(otherEmployee as OtherEmployee).specialField = "somevalue";
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top