2

给定对象初始化器:

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#中有这样的东西吗?

4

1 回答 1

1

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

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

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

于 2013-06-01T17:29:55.067 回答