'初始化我的类的对象时,无法使用集合初始值设定项初始化类型

时间:2016-08-26 09:35:38

标签: c# wpf class initialization

我有一个非常奇怪的问题。

这是我定义的课程:

public class HeaderTagControlsPair
{
    public TextBlock HeaderTextBlock = new TextBlock();
    public ComboBox TagComboBox = new ComboBox();
    public RowDefinition Row = new RowDefinition();
}

现在,我想创建一个这个类的对象并初始化它:

    HeaderTagControlsPair example = new HeaderTagControlsPair
    {
        HeaderTextBlock.Text = "test"
    };

我不能这样做。我得到了这三个错误:

Error   1   Cannot initialize type 'CSV_To_Tags_App.HeaderTagControlsPair' with a collection initializer because it does not implement 'System.Collections.IEnumerable'
Error   2   Invalid initializer member declarator   
Error   3   The name 'HeaderTextBlock' does not exist in the current context

我不知道它为什么会发生,我只是使用简单的对象初始化。我做错了什么?

2 个答案:

答案 0 :(得分:2)

应该是(C#6):

HeaderTagControlsPair example = new HeaderTagControlsPair
{
     HeaderTextBlock = {Text = "test" }
};

答案 1 :(得分:1)

您可以使用object initializer syntax初始化(公共)字段或属性。在这种情况下,HeaderTextBlock属性。但是您无法初始化这些类型的属性。因此,您需要Text属性的嵌套对象初始值设定项。

要么:

HeaderTagControlsPair example = new HeaderTagControlsPair
{
    HeaderTextBlock = new TextBlock {Text = "test"}
};
C#6中的

或更短:

HeaderTagControlsPair example = new HeaderTagControlsPair
{
    HeaderTextBlock = { Text = "test" }
};

(我更喜欢第一个版本以防止像this

这样的奇怪问题