我有一个非常奇怪的问题。
这是我定义的课程:
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
我不知道它为什么会发生,我只是使用简单的对象初始化。我做错了什么?
答案 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)
这样的奇怪问题