17

私は書くことができると思います:

protected static

私のC#クラス(私の場合はaspx.cs)で。と同様 :

private static

どういう意味ですか?スタティックはどこからでもアクセスできます。なぜ保護/プライベート?

4

7 に答える 7

30

静的の定義は「どこでも利用できる」わけではありません。これは、AppDomainのスコープ内で宣言されているタイプ全体で共有される変数です。

アクセス修飾子はこの定義を変更しませんが、明らかにアクセスの範囲に影響を与えます。

静的修飾子とアクセス修飾子を混同しています。静的変数には、アクセシビリティを定義する必要があります。あなたの例では、プライベート静的変数はそれが定義されているタイプ内でのみアクセス可能であり、protectedはタイプと派生タイプ内でアクセス可能です。

注意点として、IIS(ASP.NETアプリケーションをホストしている)はワーカープロセスをリサイクルします。これにより、その時点で有効な静的変数値がすべてフラッシュされます。

于 2012-05-23T08:35:03.967 に答える
5

変数をPrivateとして宣言すると、現在のクラスの外部でアクセスできなくなり、Protectedとして宣言すると、派生クラスのみがその変数にアクセスできます。この例では、privateとProtectedの基本的な意味は次のとおりです。変更されないので、静的または単純なものをどのように宣言するかは関係ありません...

class Test
{
    protected static int var1;
    private static int var2;
}
class MainProgram : Test
{
    private static int test;
    static void Main(string[] args)
    {
        Test.var1 = 2;
        Test.var2 = 5;   //ERROR :: We are not able to access var2 because it is private                 
    }
}

上記のコードでは、静的変数が現在のクラスでのみアクセス可能であるかどうかを確認できます。その場合は、それをプライベートとして作成する必要があります。

于 2012-05-23T08:39:25.493 に答える
4

private
タイプまたはメンバーには、同じクラスまたは構造体のコードでのみアクセスできます。
保護され
たタイプまたはメンバーは、同じクラスまたは構造体、あるいは派生クラスのコードによってのみアクセスできます。 静的修飾子
静的メソッドは、インスタンス参照なしで呼び出されます。

于 2012-05-23T08:39:41.977 に答える
2

staticどこからでもアクセスできるという意味ではありません。可視性を定義するにはprotected/が必要です。private

于 2012-05-23T08:35:29.920 に答える
1

ポリモーフィズムと継承を使用する場合など、特定のクラスを介してのみ変数にアクセスできるようにする場合は、protectedを使用します。パブリックはスコープ内で常に表示され、プライベートはかなり明白です。

于 2012-05-23T08:38:29.713 に答える
0

1つの用途は、プライベート静的フィールドを作成し、パブリック静的メソッド/プロパティを使用して公開できることです(シングルトンなどのカスタムビジネスロジックを適用するため)

于 2012-05-23T08:36:05.127 に答える
0

Staticは修飾子です。そして、protectedとprivateはアクセス修飾子です。アクセス修飾子は、変数のスコープを指定します。静的修飾子は、フィールドまたはメソッドをシングルトンにする場合に使用されるため、オブジェクトを作成してそれらにアクセスする必要はなく、クラス名から直接呼び出すことができます。

于 2019-09-09T07:55:36.400 に答える