作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
partial class Employee
{
protected string empName;
protected int empID = new int();
protected float currPay;
protected static int empAge;
protected string empSNN;
// these are nested classes
public class BenefitPackage
{
// I want to access this class
public enum BenefitPackageLevel
{
standard,Gold,Platinum
}
public double ComputePayDeduction()
{
return 125.0;
}
}
我正在尝试通过 employees 类的实例访问 BenefitPackageLevel 类:
Employee emp= new Employee()
var benefitpackage= emp.BenefitPackage.BenefitPackageLevel.standard;
但为什么我没有将 BenefitPackage 定义为静态成员,我只能通过类级别访问它,例如:
Employee.BenefitPackage.BenefitPackageLevel.standard
有没有可能嵌套类默认是静态的?
最佳答案
您没有将其作为静态成员访问。您正在通过其外部类型访问 standard
。当您声明一个嵌套类型时,它的范围仅限于外部类型,因此您必须通过其外部类型访问它。
例如,如果你想创建一个 BenefitPackage
的实例,你应该这样做:
var benefitPackage = new Employee.BenefitPackage();
所以当你想访问 standard
作为 BenefitPackageLevel
枚举的值时,你必须像这样使用它:
var temp = Employee.BenefitPackage.BenefitPackageLevel.standard;
除非您公开嵌套类型,否则外部类型无法访问它们。
请记住,当您创建外部类型的实例时,它不会创建其内部类型的实例。
关于c# - 如何从类的实例访问嵌套类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42875765/
我是一名优秀的程序员,十分优秀!