我是C#的新手。我正在关注GUI框架上的视频。我想知道为什么没有正常的括号'()'但是卷曲的括号' {}'在新标签之后'在以下代码中。
我们不是在这里实例化课程吗?
Content = new Label {
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.Center,
Text = "Hello word"
};
答案 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,
};