不能用集合初始化器初始化类型'在初始化类的对象时
本文关键字:初始化 对象 集合 类型 不能 | 更新日期: 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" }
};
(我更喜欢第一个版本,以防止这种奇怪的问题)