C# ECMA-type Object,可以赋值任意名称、任意值类型的属性
System.Dynamic.ExpandoObject 配合 dynamic关键字,可以创造出一种 ECMA风格的object,其功能为,可以直接为它赋值任意名称、任意值类型的属性
1 dynamic obj = new System.Dynamic.ExpandoObject(); 2 3 obj.intValue = 123; 4 5 obj.strValue = "234"; 6 7 obj.XXClass = new XXClass();
不过,有网友指出,这种东西不好。原因如下:
1.php就是因为这种磨砺两可的东西太多了,导致了语言的不稳定性。主要表现在:
1.1 属性是否存在(null判断)会出问题。比如,有时明明为null,但某种判断Null的方法,得出的结果却认为它不为null
1.2 属性类型判断会出问题。比如有继承关系的。
1.3 以上两者,在开发中,为了保证正确性,实际代价远远大于使用这种类型得来的好处。
2.dynamic关键字会屏蔽了IDE的自动提示和自动补全功能,即使 = new XXX() 这种指明了创建何种类后,依然如此。