我在C#中有以下代码:
Action a = new Action(() => Console.WriteLine());
dynamic d = a;
d += "???";
Console.WriteLine(d);
Run Code Online (Sandbox Code Playgroud)
而输出是
System.Action ???
如果你向d添加一个int而不是一个字符串,它会抛出一个异常.
你能解释一下为什么会这样吗?
我认为发生这种情况是因为当您使用d += "???";d 时转换为字符串(使用ToString()采用对象名称的默认方法)然后“???” 被附加并写入控制台。
如果您尝试使用d += 2此方法会失败,因为没有默认方法将 Action 转换为整数。其他类型也一样...