静的クラスは参照型か値型か? 誰かが良い説明をしてくれると本当に助かります
6 に答える
クラスは、静的か非静的かに関係なく、常に参照型です。
値と参照型は、型のインスタンスに関するものです。静的クラスはインスタンス化できないため、この質問は静的クラスには関係ありません。
静的クラスには静的メンバーのみを含めることができ、静的メンバー (プロパティなど) はアプリケーション全体に対して 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
タイプです
はい、メソッド内で StaticClass.Property 値を変更すると、静的クラスは参照型と見なされます。この変更は、このクラスを参照するすべての場所に入力されます。メモリ アドレスは 1 つしかなく、コピーできないため、別のメソッドまたはプロパティの呼び出しが発生すると、この新しい値が古い値よりも優先されます。