【发布时间】:2015-07-29 16:00:57
【问题描述】:
我有一个班级员工,其中我有一个静态函数,其中包含员工人数和员工类型(例如老师、助理老师、个人助理等)。为此,我在里面有一个静态班级,我有一个员工人数的静态计数以及我要访问基类静态方法的每个子类内部。
class Employee{
private static int emp;
//...code
static void IncreaseEmployeeCount()
{
emp=emp+1;
}
}
class Teacher : Employee{
private static int tchr;
//...code
static void IncreaseTeacherCount()
{
tchr = tchr + 1;
}
}
如何使用子类访问基类静态方法。它尝试使用以下但因编译时错误而失败:
Teacher teacher = new Teacher();
teacher.IncreaseEmployeeCount();
'Employee.IncreaseEmployeeCount()' 由于其保护级别而无法访问
添加public访问级别仍然报错:
无法使用实例引用访问成员“Employee.IncreaseEmployeeCount()”;改为使用类型名称来限定它
【问题讨论】:
-
你为什么要在这个问题中添加
c++标签? -
你应该试试 super.employeeCount() 而不是 tch。 tch 是一个实例,而不是它自己的类。 employeeCount() 是类级别的函数,而不是实例级别的函数。
-
@AlexeiLevenkov:除了从每个静态函数返回一个值之外,代码是可以接受的 C#。
-
@PaulF 我对所有小写字母感到困惑...确实是这样-我已经更新了示例以匹配默认的 C# 准则并且更易于编译-应该是一个更好的问题(我也不能再关闭它了)
标签: c# static static-methods