为什么“((动态)字典).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?
感谢您的帮助!
因为Dictionary<string, string>
没有成员MyKey
。动态类型不会动态创建成员。
个角度来看,您要执行的操作等同于((dynamic) dictionary).get_MyKey()
。显然,字典没有get_MyKey()
方法。