wrs*_*der 2 c# language-design
dynamicC#中的关键字可以让我这样做:
dynamic obj = ....;
var foo = obj.foo;
Run Code Online (Sandbox Code Playgroud)
obj.foo在运行时解析属性引用的位置.
由于属性是在运行时解析的,为什么不能将属性本身指定为变量?例如,
var propName = "foo";
var foo = obj[propName];
Run Code Online (Sandbox Code Playgroud)
?
我知道你可以通过反射或将对象转换为Dictionary来完成类似的事情.我对解决方案不感兴趣,因为它解释了为什么C#首先不支持类似Javascript的方括号查找.
为什么没有这样做的一个可能原因是模棱两可.
考虑这个例子:
dynamic d = new Dictionary<string,object>() {
{"Count", 2}
};
object c = d["Count"];
Run Code Online (Sandbox Code Playgroud)
一方面,字典具有属性Count,字典有一个条目,因此c应设置为1.另一方面,字典有一个键"Count"的条目,因此c应设置为2.
选择这些替代方案中的任何一个都会随意丢弃另一种可能性.在这种情况下,最好不要首先介绍该功能.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |