在許多語言中,您可以創建一個對象而不創建數據類型,並向該對象添加屬性。是否有可能在C#中創建一個沒有類的對象?
例如,在JS或AS:
var myObject = {};
myObject.myParameter = "hello world";
或者你可以創建C和C++結構。
在C#中可以這樣做嗎?
在許多語言中,您可以創建一個對象而不創建數據類型,並向該對象添加屬性。是否有可能在C#中創建一個沒有類的對象?
例如,在JS或AS:
var myObject = {};
myObject.myParameter = "hello world";
或者你可以創建C和C++結構。
在C#中可以這樣做嗎?
是有ExpandoObject
下System.Dynamic
namespace.You可以在飛行中像你這樣在其他動態語言添加屬性
dynamic dynObject = new ExpandoObject();
dynObject.someProperty= "Value";
http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx
Anonymous Types是你在找什麼。 EG -
var v = new { Amount = 108, Message = "Hello" };
上面的代碼將創建一個新的object
與性能Amount
和Message
。
這種方法比其他答案中的expandoobject更好嗎?爲什麼? – Pier
@Pier,這種方法比動態性能稍高一點,因爲它實際上是在編譯時定義一個類型。如果您需要將某些數據組織在一起以供本地使用(例如執行組合來自多個數據源的數據的LINQ操作時),則首選方法是動態更靈活(您可以根據需要隨時添加字段),但更重。 –
@Pier他們是完全不同的東西。匿名類在編譯時確定。所以你不能在運行時添加/更改屬性。 –
dynamic myObject = new ExpandoObject();
myObject.myParameter = "hello world";
Console.WriteLine(myObject.myParameter);
是的,就我忘了如何。 – quantum
爲什麼是否定的投票? – Pier
那不是我。今天我的選票沒有了。 – quantum