ExpandoObject 的真正好處
簡介
.NET 4 中所引入的允許類別開發人員在運行時動態地將屬性指派給物件。這引發了人們對其相對於傳統字典結構的優勢的質疑。
語法糖
雖然 ExpandoObject 似乎透過簡化屬性存取來增強語法,但它沒有提供重要的功能比字典有好處。以下程式碼:
dynamic obj = new ExpandoObject(); obj.MyInt = 3; obj.MyString = "Foo"; Console.WriteLine(obj.MyString);
本質上相當於:
var obj = new Dictionary<string, object>(); obj["MyInt"] = 3; obj["MyString"] = "Foo"; Console.WriteLine(obj["MyString"]);
分層物件表示
ExpandoObject 的一個潛在優勢在於它創建複雜層次物件的能力。例如:
Dictionary<String, object> dict = new Dictionary<string, object>(); Dictionary<String, object> address = new Dictionary<string,object>(); dict["Address"] = address; address["State"] = "WA"; Console.WriteLine(((Dictionary<string,object>)dict["Address"])["State"]);
使用ExpandoObject,此程式碼變得更加清晰:
dynamic expando = new ExpandoObject(); expando.Address = new ExpandoObject(); expando.Address.State = "WA"; Console.WriteLine(expando.Address.State);
事件處理和屬性通知
Expando接口,與字典相比,可以更好地控制屬性。此外,還可以將事件新增至 ExpandoObject,從而實現動態事件處理。
以上是ExpandoObject 與 Dictionary:動態屬性分配何時提供真正的優勢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!