我可以在对象的构造之外使用对象初始值设定项吗?

问题描述:

考虑对象初始化:我可以在对象的构造之外使用对象初始值设定项吗?

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

他们能以某种方式在其他地方使用的(对象的构造外),这样insted的使用:

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

为什么不在'Foo'上有'parameterized'构造函数呢? –

+0

@ I4V哦,我不知道VB也有这个东西。感谢您的注意。 – Bosak

+0

@RohitVats,这不是我所要求的。我的问题不是关于使用构造函数或对象初始值设定项。这是你已经有了一个构建对象的地方,而不是键入很多foo.something来使用objectinitializer-like语法,但我现在知道它在C#中是不可能的。 – Bosak

不,对象初始值设定器是唯一可以使用像这样的赋值语法的地方。如果你需要在一次从代码中的许多不同的地方分配多个字段没有重复,你可以定义封装了所有分配给你一个方法:

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

不幸的是,它不会让你设置的任意组属性,就像你展示的VB语法一样。

+0

你能给我一个简单的例子,说明如何封装所有的作业 – Bosak