嵌套类在C#中的影响是什么?

时间:2014-02-15 01:15:28

标签: c# class instance

声明嵌套类对对象有一些功能/层次结构影响,或者仅仅是访问/可见性问题。

我的程序有4个课程,但我只想公开其中一个,原来我声明如下:

namespace mynamespace{

     private class A{
       // some members;
     }

     private class B{
       // some members;
     }

     private class C{
       // some members;
     }

     public class D{
       // some members;
     }

}

但是编译器抱怨,所以除了其他方面之外,我将私有更改为内部,但与我的想法相反,所有4个类都可用于外部程序,我不想要。我尝试了所有我能想象但没有运气的东西,所以我想我应该尝试在D类中嵌套A,B和C类,如下所示:

namespace mynamespace{

     public class D{
       // some members;

        private class A{
           // some members;
        }

        private class B{
           // some members;
        }

        private class C{
          // some members;
        }
     }

}

...这种方式只有我想要发布的类实际发布,但是因为我是C#的新手,所以我不确定这是否是正确的方法。我担心这种变化可能会产生与内存消耗,性能等相关的后果。

1 个答案:

答案 0 :(得分:0)

如果您要完成的唯一事情是只允许其他项目可访问,那么您不需要嵌套类。只需将您不希望其他项目显示的所有项目标记为internal(或者只使用无修饰符,因为internal是默认值)。

如果要将它们隐藏在同一项目中的其他类中,那么使用嵌套的private类就可以了。请注意,嵌套类可以访问嵌套它们的非公共成员。因此,他们获得了一点力量,同时又不太容易被其他类型使用