0

静的クラスをプライベートとして宣言する用途はありますか。以下のコードは次のとおりです。

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

2 に答える 2

2

あなたが提供したサンプルコードは、実際にはプライベートクラスではなく内部クラスを示しています。これは完全に問題なく、常に行われます。これは、クラスのメソッドが同じモジュール内の他のクラスから利用可能であることを意味しますが、外部からは利用できません。

静的クラスのプライベート メンバーを宣言することを意味する場合は、必ずあります。

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

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

ネストされたプライベートな静的クラスを宣言することを意味する場合 (ドキュメントによると、ネストされたクラスのみをプライベートにできるため)、それを行うことはできますが、おそらくそれを行う理由はありません。

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

に等しい

class SomeClass
{
    private static string GetVal()
    {
        return "Hello";
    }
}
于 2013-03-17T18:04:41.047 に答える
1

あなたの例のようなアクセス修飾子のないデフォルトのクラスはinternalであり、 privateではありません。次のリファレンスを参照してください: http://msdn.microsoft.com/en-us/library/ms173121.aspx。これは、ライブラリ/プロジェクト内のどこからでもこのクラスにアクセスできることを意味します。これは、必ずしもクラスを外部に公開することなく、クラスを内部で使用できるため、理にかなっています。

明示的に非公開として宣言することは、私の意見では、いくつかのまれなケースでは意味があります。以前、ネストされたクラスで単に特定のものをグループ化し、コードをよりきれいに/読みやすくするために使用しました。ただし、ネストされたクラスを作成している場合、通常、コードを再設計し、その一部を別のファイルと別のクラスにプルする必要があることを意味します。むしろ、ファイルごとに 1 つのクラスに固執するようにしてください。

于 2013-03-17T18:29:22.363 に答える