C#中的内部类能够使用外部类定义的类型和静态方法但是不能直接使用外部类的实例方法直接看来外部类对于内部类的作用更像是一个命名空间在C#中始终可以用(只要访问控制允许)
SysModelKey key = new ModelKey()来创建一个内部类的实例这个实例与外部类的任何实例没有任何直接的关系类似于Java中的静态内部类
在C#中类区分为Nested Class和NotNested Class前者是声明在其他数据类型内部的类后者是直接定义在某一个命名空间的类
非内嵌类只允许使用public和internal的访问控制而内置类则允许使用所有的五种访问控制符private protected internal protectedpublic和internal内部类也可以访问外部类的所有方法包括instance方法和private方法但是需要显式的传递一个外部类的实例
创建内部类的一个目的是为了抽象外部类的某一状态下的行为或者内部类仅在外部类的某一特定上下文存在或是隐藏实现通过将内部类设为private可以设置仅有外部类可以访问该类内部类的另外一个重要的用途是当外部类需要作为某个特定的类工作而外部类已经继承与另外一个类的时候因为C#不支持多继承所以创建一个对应的内部类作为外部类的一个fa?ade来使用
内部类的反射名称的改为+例如SysModel+Key「其中Key是Model的内部类」