c#構造初使化の手順
4946 ワード
この基礎的な知識ですが、私は今になってやっとそれに気づきました.考えても失敗した.
直接コード:簡単
上のコードについて.コンストラクタを先に実行しますか、それともフィールドi変数を最初に使用しますか.実際には、この問題を意識すれば、フィールドi変数を最初に使用する必要があります.
では、ベースがサブクラスを派生させたら、その構造順序はどうなっているのでしょうか.
したがって、その実行順序は、子フィールド-親フィールド-親コンストラクタ-子コンストラクタです.
直接コード:簡単
public class Base
{
int i=0;
public Base()
{
System.Console.WriteLine(" ");
}
}
class Program
{
static void Main(string[] args)
{
Base d = new Base();
}
}
上のコードについて.コンストラクタを先に実行しますか、それともフィールドi変数を最初に使用しますか.実際には、この問題を意識すれば、フィールドi変数を最初に使用する必要があります.
では、ベースがサブクラスを派生させたら、その構造順序はどうなっているのでしょうか.
/// <summary>
///
/// </summary>
public class Base
{
public int baseint = 100;
public Base()
{
System.Console.WriteLine(" : ");
}
private class Inner
{
public Inner()
{
System.Console.WriteLine(" : Inner");
}
}
/// <summary>
///
/// </summary>
private Inner inner = new Inner();
}
/// <summary>
///
/// </summary>
class Derived : Base
{
public Derived()
{
System.Console.WriteLine(" : ");
}
private class Inner
{
public Inner()
{
System.Console.WriteLine(" : Inner");
}
}
/// <summary>
///
/// </summary>
private Inner inner = new Inner();
}
したがって、その実行順序は、子フィールド-親フィールド-親コンストラクタ-子コンストラクタです.