gpt4 book ai didi

c# - 为什么 C# 不让我像字典一样对动态进行索引?

转载 作者:行者123 更新时间:2023-11-30 20:22:31 25 4
gpt4 key购买 nike

C# 中的 dynamic 关键字可以让我做这样的事情:

dynamic obj = ....;
var foo = obj.foo;

在运行时解析属性引用 obj.foo

既然属性是在运行时解析的,为什么不能将属性本身指定为变量呢?例如,

var propName = "foo";
var foo = obj[propName];

?

我知道您可以通过反射或将对象转换为字典来完成类似的事情。我对解决方案不感兴趣,因为它首先解释了为什么 C# 不支持类似 Javascript 的方括号查找。

最佳答案

之所以没有这样做,一个可能的原因是歧义。

考虑这个例子:

dynamic d = new Dictionary<string,object>() {
{"Count", 2}
};
object c = d["Count"];

一方面,字典有属性 Count,字典有一个条目,所以 c 应该设置为 1。另一方面,字典有一个键为“Count”的条目,所以 c 应该设置到 2.

选择这些备选方案中的任何一个都会任意放弃另一种可能性。在这种情况下,最好不要首先引入该功能。

关于c# - 为什么 C# 不让我像字典一样对动态进行索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31330818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com