我可以在对象构造之外使用对象初始化器吗?

时间:2013-06-01 17:26:36

标签: c# object-initializers

给定对象初始化器:

Foo foo = new Foo{ Name = "Jhon", Value = 2, IsMale = true };

它们可以以某种方式在其他地方使用吗?(外部对象构造)因此使用:

foo.Name = "Name";
foo.Value = 5;
...
foo.DoSth();

只需使用以下内容:

Name = "Name";
Value = 5;
...
DoSth();

鉴于这不在foo的类层次结构中。这是为了避免多次使用一个对象成员的地方。

例如,在VB / GML(GameMaker的脚本语言)中,可以使用:

with(foo)
{
    Name = "Name";
    Value = 5;
    ...
    DoSth();
}

而不是foo.something

C#中有这样的东西吗?

1 个答案:

答案 0 :(得分:1)

不,对象初始值设定项是唯一可以使用这种赋值语法的地方。如果您需要从代码中的许多不同位置一次分配多个字段而不重复,您可以定义一个封装所有分配的方法:

void SetNameAndGender(string f, string l, bool isMale) {
    FirstName = f;
    LastName = l;
    IsMale = isMale;
}

不幸的是,它不允许您设置任意属性组,例如您显示的VB语法。