コンストラクタチェインを使用して、他のコンストラクタからパラメータ化されたコンストラクタを呼び出すことができます。C#のパラメータ化されたコンストラクタからパラメータのないコンストラクタを呼び出す?
しかし、
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
var t1 = new T1("t2");
}
}
public class T1
{
public T1()
{
Console.WriteLine("t1");
}
public T1(string s):base()
{
Console.WriteLine(s);
}
}
これは(パラメータなし)ベースのコンストラクタを呼び出していないようです。
アイデア?
編集:
現在:t2が印刷されます。 t1はコンソールにありません。
ので、私は次のような方法に頼ってきた:
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
var t1 = new T1("t2");
}
}
public class T1
{
private void privateMethod()
{
Console.WriteLine("common method");
}
public T1()
{
privateMethod();
}
public T1(string s):base()
{
Console.WriteLine(s);
privateMethod();
}
}
は、これを行うのいずれかのより良い方法はありますか?
ここには基本クラスはありますか? –
@MrinalKamboj - 彼らは 'this'を使うことを意図していて、T1コンストラクタを参照している' base'を間違って考えていました。この場合、 'base'は実際には' System.Object'です。 – keyboardP
OP、クイックデバッグのヒント - Visual Studioで 'base()'をクリックし、F12を押します。それが何を指しているかが分かります。今度は 'this()'と入れ替えてからF12を押すと、 'T1'コンストラクタを参照するようになります。期待しているプログラミングフローが得られない場合は、1行ずつステップを実行すると、問題の原因を特定するのに役立ちます。 – keyboardP