在c#中声明私有静态类的任何用法?

时间:2013-03-17 18:02:06

标签: c#

是否有任何将静态类声明为private的用法。以下是代码:

static class DerivedClass
{
    private static string GetVal()
    {
        return "Hello";
    }
}

2 个答案:

答案 0 :(得分:2)

您提供的示例代码实际上说明了内部类,而不是私有类。这非常好,并且一直都在做。这意味着类的方法可以从同一模块中的其他类获得,但不能从外部获得。

如果你的意思是声明静态类的私有成员,那肯定有。

static class DerivedClass
{
    public static string GetVal()
    {
        return GetValInternal();
    }

    private static string GetValInternal()
    {
        return "Hello";
    }
}

如果你的意思是声明私有静态嵌套类(因为只有嵌套类可以是私有的,根据documentation),那么你可以这样做,但可能没有理由这样做。

class SomeClass
{
    private static class DerivedClass
    {
        public static string GetVal()
        {
            return "Hello";
        }
    }
}

相当于

class SomeClass
{
    private static string GetVal()
    {
        return "Hello";
    }
}

答案 1 :(得分:1)

默认情况下,没有访问修饰符的类是 internal ,而不是 private 。请参阅此参考:http://msdn.microsoft.com/en-us/library/ms173121.aspx。这意味着您可以从库/项目内的任何位置访问此类。这是有道理的,因为它允许您在内部使用该类,而不必将其暴露给外部世界。

明确地将其声明为私人但在某些罕见的情况下仅在我看来才有意义。我之前使用它来嵌套类只是为了将某些事物组合在一起并使我的代码更漂亮/更易读。但是我发现,如果我创建嵌套类,通常意味着我需要重新设计我的代码并将其中的一部分拉入单独的文件和单独的类中。而是试着坚持每个文件一个类。