不能用集合初始化器初始化类型'在初始化类的对象时

本文关键字:初始化 对象 集合 类型 不能 | 更新日期: 2023-09-27 18:04:01

我有一个很奇怪的问题。

这是我定义的一个类:

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

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

不能用集合初始化器初始化类型'在初始化类的对象时

应该是(c# 6):

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

您可以使用对象初始化语法初始化(公共)字段或属性。在这个例子中是HeaderTextBlock的性质。但是你不能初始化这些类型的属性。所以你需要一个嵌套的Text属性的对象初始化器。

这:

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

或更短的

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

(我更喜欢第一个版本,以防止这种奇怪的问题)