変数のライフサイクルについての面接問題
1275 ワード
皆さん、次の短いコードがあります.見てください.出力した結果は何ですか.
皆さん、答えられるかどうか見せてください.
31、32、31、32、32、33の順です
資料の検索を通じて、staticのもっと多くの知識を得て、総括します
(1)静的フィールド,読取り専用フィールドなどの初期化に用いる.
(2)staticキーワードを追加し、静的コンストラクション関数がプライベートであるため、アクセス修飾子を追加することはできません.
(3)クラスの静的コンストラクション関数は、クラスのインスタンスを作成するか、クラスを参照する任意の静的メンバーのみが静的コンストラクション関数を励起する、特定のアプリケーションドメインで最大1回実行されます.
(4)静的構造関数は継承不可能であり,直接呼び出すことはできない.
(5)クラスに実行を開始するためのMainメソッドが含まれている場合、クラスの静的構造関数はMainメソッドを呼び出す前に実行される.初期値設定項目を持つ静的フィールドは、クラスの静的構造関数を実行するときに、テキスト順に初期値設定項目を実行します.
(6)静的コンストラクタが記述されておらず、クラスに初期値設定の静的フィールドが含まれている場合、コンパイラは自動的にデフォルトの静的コンストラクタを生成します.
class Person
{
public static int A=30;
static Person()
{
A++;
}
public int B=A++;
}
static void Main(string[] args)
{
Person p1 = new Person();
Console.WriteLine(p1.B);
Console.WriteLine(Person.A);
Console.WriteLine(p1.B);
Console.WriteLine(Person.A);
Person p2 = new Person();
Console.WriteLine(p2.B);
Console.WriteLine(Person.A);
}
皆さん、答えられるかどうか見せてください.
31、32、31、32、32、33の順です
資料の検索を通じて、staticのもっと多くの知識を得て、総括します
(1)静的フィールド,読取り専用フィールドなどの初期化に用いる.
(2)staticキーワードを追加し、静的コンストラクション関数がプライベートであるため、アクセス修飾子を追加することはできません.
(3)クラスの静的コンストラクション関数は、クラスのインスタンスを作成するか、クラスを参照する任意の静的メンバーのみが静的コンストラクション関数を励起する、特定のアプリケーションドメインで最大1回実行されます.
(4)静的構造関数は継承不可能であり,直接呼び出すことはできない.
(5)クラスに実行を開始するためのMainメソッドが含まれている場合、クラスの静的構造関数はMainメソッドを呼び出す前に実行される.初期値設定項目を持つ静的フィールドは、クラスの静的構造関数を実行するときに、テキスト順に初期値設定項目を実行します.
(6)静的コンストラクタが記述されておらず、クラスに初期値設定の静的フィールドが含まれている場合、コンパイラは自動的にデフォルトの静的コンストラクタを生成します.