2012-10-21 145 views
10

在許多語言中,您可以創建一個對象而不創建數據類型,並向該對象添加屬性。是否有可能在C#中創建一個沒有類的對象?

例如,在JS或AS:

var myObject = {}; 
myObject.myParameter = "hello world"; 

或者你可以創建C和C++結構。

在C#中可以這樣做嗎?

+0

是的,就我忘了如何。 – quantum

+0

爲什麼是否定的投票? – Pier

+0

那不是我。今天我的選票沒有了。 – quantum

回答

19

Anonymous Types是你在找什麼。 EG -

var v = new { Amount = 108, Message = "Hello" }; 

上面的代碼將創建一個新的object與性能AmountMessage

+0

這種方法比其他答案中的expandoobject更好嗎?爲什麼? – Pier

+3

@Pier,這種方法比動態性能稍高一點,因爲它實際上是在編譯時定義一個類型。如果您需要將某些數據組織在一起以供本地使用(例如執行組合來自多個數據源的數據的LINQ操作時),則首選方法是動態更靈活(您可以根據需要隨時添加字段),但更重。 –

+3

@Pier他們是完全不同的東西。匿名類在編譯時確定。所以你不能在運行時添加/更改屬性。 –

3

閱讀ExpandoObject

dynamic myObject = new ExpandoObject(); 
myObject.myParameter = "hello world"; 

Console.WriteLine(myObject.myParameter); 
相關問題