C#中嵌套在employee子类中的faculty子类无法访问如何解决?
解答
不需要删除employee类,你的问题本质是C#嵌套类的访问规则问题,有两种常用的解决方式:
问题根源
你将faculty、staff类定义为了employee类的嵌套内部类,按照C#语法规则,访问嵌套类时必须显式指定外层类的名称作为前缀,无法直接用嵌套类名调用。
方案1:保留现有嵌套结构,修改调用代码
如果不想调整现有类的定义结构,只需要修改实例化代码,加上外层类employee的前缀即可:
public class Program { public static void Main() { // 嵌套类需要使用 外层类名.嵌套类名 的格式访问 employee.faculty mem = new employee.faculty("Ray"); } }
方案2:调整类结构(更符合面向对象设计,更推荐)
从业务逻辑来看,faculty、staff本身就是employee的子类,完全没有必要嵌套在employee类内部,直接将两个子类移到employee类外平级定义即可:
public class employee : person { // 这里可以保留employee类的通用成员和逻辑 } // 移出employee类,作为平级的子类定义 public class faculty : employee { public faculty(String facultyName) { name = facultyName; } } public class staff : employee { public staff (String staffName) { name = staffName; } }
调整后你原本写的实例化代码faculty mem = new faculty("Ray");就可以正常运行了。
内容的提问来源于stack exchange,提问作者Raffy
相关产品推荐
相关产品推荐

