为什么以下C#代码中有一个卷曲括号?

时间:2017-07-07 12:46:25

标签: c#

我是C#的新手。我正在关注GUI框架上的视频。我想知道为什么没有正常的括号'()'但是卷曲的括号' {}'在新标签之后'在以下代码中。

我们不是在这里实例化课程吗?

Content = new Label {
    HorizontalOptions = LayoutOptions.Center,
    VerticalOptions = LayoutOptions.Center,
    Text = "Hello word"
};

1 个答案:

答案 0 :(得分:2)

这是object initializer - 在C#3.0中引入

Content = new Label {
    HorizontalOptions = LayoutOptions.Center,
    VerticalOptions = LayoutOptions.Center,
    Text = "Hello word"
};

仅在Label具有无参数构造函数时才有效 我们可以假设Label看起来像这样:

public class Label 
{
    public Label()
    {
        //this empty ctor is not required by the compiler
        //just here for illustration
    }

    public string HorizontalOptions {get;set}
    public string VerticalOptions  {get;set}
    public string Text {get;set}
}

对象初始值设定项在实例化时设置属性。

但是,Label确实在ctor中有一个参数,如下所示:

public class Label 
{
    public Label(string text)
    {
        Text = text
    }

    public string HorizontalOptions {get;set}
    public string VerticalOptions  {get;set}
    public string Text {get;set}
}

然后这将是等效的

Content = new Label("Hello World") { //notice I'm passing parameter to ctor here
    HorizontalOptions = LayoutOptions.Center,
    VerticalOptions = LayoutOptions.Center,
};