5

静的クラスは参照型か値型か? 誰かが良い説明をしてくれると本当に助かります

4

6 に答える 6

15

クラスは、静的か非静的かに関係なく、常に参照型です。

于 2012-07-02T12:34:28.403 に答える
2

値と参照型は、型のインスタンスに関するものです。静的クラスはインスタンス化できないため、この質問は静的クラスには関係ありません。

静的クラスには静的メンバーのみを含めることができ、静的メンバー (プロパティなど) はアプリケーション全体に対して 1 回作成されるため、その値を変更すると、アプリケーション内のすべての場所で変更されます。

于 2012-07-02T13:05:35.037 に答える
1

あなたが参照しているのは静的クラスのメンバーだと思います..reference実際にオブジェクトである場合、それらは型です。それ以外の場合は、単に値の型です。私が知っているように、静的クラス自体を渡すことはできません。このコードを実行してみてください

class Program
    {
        static void Main(string[] args)
        {
            StaticClass.x = 89;
            Console.WriteLine(StaticClass.x);
            changeValue(StaticClass.x);
            Console.WriteLine(StaticClass.x);
            Console.ReadKey();
        }
        static void changeValue(int x)
        {
            x = x + 1;
        }
    }
{
    public static class StaticClass
    {
        public static int x { get; set; }
    }
}

編集:-
どちらの場合も出力は89です
編集:-
それでも少し深く掘り下げると、静的クラスは基本的にプライベートコンストラクターとそれに関連付けられた状態(変数)を持たないクラスです(私が提供した例とは異なります) . はい、理論的にはreferenceタイプです

于 2012-07-02T12:42:36.717 に答える
0

はい、メソッド内で StaticClass.Property 値を変更すると、静的クラスは参照型と見なされます。この変更は、このクラスを参照するすべての場所に入力されます。メモリ アドレスは 1 つしかなく、コピーできないため、別のメソッドまたはプロパティの呼び出しが発生すると、この新しい値が古い値よりも優先されます。

于 2012-07-02T12:43:23.337 に答える