在匿名对象上设置属性

时间:2011-07-19 14:09:06

标签: c#

我认为这在c#.net 2.0中是可行的吗?

header.Cells.Add((new TableCell(){Text = "First header"}));

除非我做错了?这会产生以下错误:

CS1026: ) expected

这是错误吗?

5 个答案:

答案 0 :(得分:2)

在C#3.0中引入了属性初始化语法;它在C#2.0中不是有效的语法。

答案 1 :(得分:0)

我不确定C#2.0 ......但是在C#3.0中你可以这样做:

header.Cells.Add((new TableCell{ Text = "First header" }));

答案 2 :(得分:0)

我认为你不能在2.0中的声明中设置属性。所以你必须这样做:

TableCell tc=new TableCell();
tc.Text = "First header";
header.Cells.Add(tc);

答案 3 :(得分:0)

此语法的支持由编译器提供,而不是.Net运行时/ CLR。​​

如果您使用的是Visual Studio 2008或更高版本,则可以在定位.Net 2.0时完美地使用此语法,否则您将需要以“正常”方式执行此操作。

此外,您还有一对额外的冗余括号 - 使用此语法时,您可能会发现使用以下布局更容易:

header.Cells.Add(new TableCell() 
{
    Text = "First header" 
});

答案 4 :(得分:0)

这不是匿名对象,TableCell是预定义类型。您指的是C# 3.0中引入的隐式对象初始化语法,您必须以“老式”方式执行此操作。