2013-06-01 36 views
2

考慮對象初始化:我可以在對象的構造之外使用對象初始值設定項嗎?

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

回答

1

不,對象初始值設定器是唯一可以使用像這樣的賦值語法的地方。如果你需要在一次從代碼中的許多不同的地方分配多個字段沒有重複,你可以定義封裝了所有分配給你一個方法:

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

不幸的是,它不會讓你設置的任意組屬性,就像你展示的VB語法一樣。

+0

你能給我一個簡單的例子,說明如何封裝所有的作業 – Bosak

相關問題