私有嵌套静态类 - 好或坏的做法?

Sea*_*man 15 .net c# oop static nested-class

将私有静态类嵌套在非静态类中会被认为是一种不好的做法吗?

public class Outer
{
    private static class Inner
    {


    }
}
Run Code Online (Sandbox Code Playgroud)

这里的想法是'Outer'的所有实例都将共享对静态的访问.另一种方法可能是让Inner类是非静态的并使用它的静态实例:

public class Outer
{
    private static innerInstance = new Inner(); 

    private class Inner
    {


    }
}
Run Code Online (Sandbox Code Playgroud)

效果相似.这种方法有哪些优缺点或其他考虑因素?

我必须承认,我几乎从不使用嵌套类,无论是否静态,但我对这个特定的概念感兴趣.

Rex*_*x M 19

两种方法都是完全有效的.

我希望开发人员更频繁地使用私有嵌套类.结合c#的partial关键字,它使编写非常复杂的类更易于维护.想象一下,需要建立具有一个小型应用程序的复杂性一类-当你真正要容易得多可以建立一个完整的专用应用程序,与完全内部的复杂的外部类的类!

我见过的一个非常常见的例子是枚举 - 这些可能非常复杂,特别是当你开始构建可以链接的自定义迭代器时,比如LINQ.隐藏单个类中的复杂性是封装的定义.


Amy*_*y B 5

如果该类在多线程应用程序中使用,您可能需要通过锁定来控制对静态状态的访问。这是静态的问题,无论是否私有嵌套。