2

以下のコンストラクターのプロパティ「Caller」の値を1行に割り当てる便利なプロセスはありますか?

public partial class SecurityPrompt : Form {

    Form1 Caller { get; set; }

    public SecurityPrompt(Form1 _caller)  {
        Caller = _caller;
        InitializeComponent();
    }
}
4

2 に答える 2

2

オブジェクト初期化構文がありますが、コンストラクターを作成してからパブリック プロパティを割り当てます。それを使用したい場合は、ここでコンストラクターをリファクタリングする必要があります。

オブジェクト初期化子の使用:

コンパイラは、最初に既定のインスタンス コンストラクターにアクセスし、次にメンバーの初期化を処理することによって、オブジェクト初期化子を処理します。

これを使用すると、コンストラクターが作成されるまでプロパティは設定されません。したがって、プロパティが存在することを期待してコンストラクターで関数を呼び出すと、そうはなりません。心に留めておきます。

于 2012-09-19T15:53:27.497 に答える
0

以下のコンストラクターのプロパティ「Caller」の値を1行に割り当てる便利なプロセスはありますか?

いいえ。現在の構文は、コンストラクター内でプロパティを割り当てる「標準的な」方法です。ショートカットはありません ( C++ の初期化リストなど)。C# では、コンストラクタ本体で常にインラインで実行されます。

于 2012-09-19T15:52:51.837 に答える