C#类的嵌套

嵌套类(Nested Class)是在类中定义的类。以下把拥有内嵌类的类称为外部类。
嵌套类分为静态嵌套类和非静态嵌套类,其中非静态嵌套类也被称为内部类。嵌套类在
UML中是composite的另外一种代码表示形式,表示耦合度更高,并且与外部类更加紧密。
一般类的访问修饰符可以定义为默认的internal或者public,而内嵌类就有比较多的选择,

可以是为protected、internal、public以及默认的private。


内嵌类与外部类的访问限制
嵌套类可以访问外部类的方法、属性、字段而不管访问修饰符的限制。如:

public class A {  
    private static int _AInt; 
    private int _instanceInt;  
    private static void AMethod() {  
        Console.WriteLine(_AInt); 
    }  
    public void SayIt() {  
        NestedA.Method(this); 
    }        
    private class NestedA{  
        public static void Method(A a) {  
        //静态成员
        _AInt = 100; 
        AMethod();  
        //实例成员
        a._instanceInt = 10;      
        a.SayIt(); 
        } 
    } 
}

但是外部类只能够访问修饰符为public、internal

嵌套类的字段、方法、属性。示例如下:

public class A {  
    public static void AMethod() {  
         //成功
        NestedA.StaticMethod(); 
        //编译报错
        NestedA._Int = 100; 
          NestedA ins=new NestedA(); 
        //成功
        ins.Method(); 
        //编译报错     
         ins._instanceInt = 100; 
    }  
    private class NestedA {  
        private static int _Int; 
        private int _instanceInt;  
        public static void StaticMethod() { } 
        public void Method(){} 
    }  
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值