方便初始化

时间:2012-09-19 15:50:31

标签: c# constructor initialization

是否有一个方便的过程将下面的构造函数中的属性“Caller”的值赋给一行?

public partial class SecurityPrompt : Form {

    Form1 Caller { get; set; }

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

2 个答案:

答案 0 :(得分:2)

object initializer syntax,但是会创建构造函数,然后分配公共属性。如果你想使用它,你必须在这里重构你的构造函数。

使用对象初始值设定项:

  

编译器通过首先访问默认实例构造函数然后处理成员初始化来处理对象初始值设定项。

如果使用此属性,则在创建构造函数之后才会设置属性。因此,如果您在构造函数中调用函数,期望您的属性存在,那么它就不会。记住这一点。

答案 1 :(得分:0)

  

是否有一个方便的过程将下面的构造函数中的属性“Caller”的值赋给一行?

没有。您当前的语法是在构造函数中分配属性的“标准”方法。没有捷径(如C++'s initialization lists或类似)。在C#中,它总是在构造函数体中内联完成。