为什么“((动态)字典).MyKey“抛出一个 RuntimeBinderException

本文关键字:一个 RuntimeBinderException 抛出一个 MyKey 动态 字典 为什么 | 更新日期: 2023-09-27 18:34:33

让我们想象这个简单的片段:

Dictionary<string,string> dictionary = new Dictionary<string, string>();
dictionary.Add("MyKey", "MyValue");
string val;
dictionary.TryGetValue("MyKey", out val);
Console.WriteLine(val); // print "MyValue"
Console.WriteLine(((dynamic)dictionary).MyKey); // throws a RuntimeBinderException

为什么在最后一行抛出 RuntimeBinderException

感谢您的帮助!

为什么“((动态)字典).MyKey“抛出一个 RuntimeBinderException

因为Dictionary<string, string>没有成员MyKey。动态类型不会动态创建成员。

个角度来看,您要执行的操作等同于((dynamic) dictionary).get_MyKey()。显然,字典没有get_MyKey()方法。

相关文章: