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;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过employee类的实例访问BenefitPackageLevel类,例如:
Employee emp= new Employee()
var benefitpackage= emp.BenefitPackage.BenefitPackageLevel.standard;
Run Code Online (Sandbox Code Playgroud)
但是为什么我没有将BenefitPackage定义为静态成员,却可以通过类级别访问它,例如:
Employee.BenefitPackage.BenefitPackageLevel.standard
Run Code Online (Sandbox Code Playgroud)
默认情况下,嵌套类是否可能是静态的?
您没有作为静态成员访问它。您正在standard通过其外部类型进行访问。当您声明嵌套类型时,其范围仅限于外部类型,因此您必须通过其外部类型访问它。
例如,如果你想创建一个实例,BenefitPackage你应该这样做:
var benefitPackage = new Employee.BenefitPackage();
Run Code Online (Sandbox Code Playgroud)
因此,当您想standard作为枚举值进行访问时BenefitPackageLevel,必须像这样使用它:
var temp = Employee.BenefitPackage.BenefitPackageLevel.standard;
Run Code Online (Sandbox Code Playgroud)
外部类型无法访问嵌套类型,除非您将其公开。
请记住,当您创建外部类型的实例时,它不会创建其内部类型的实例。