为什么在C#中允许这样做?
dynamic abc = 123; abc = 'ashwin';
我们正在运行时更改对象的类型,但是我们知道C#是类型安全的,那么为什么它允许我们这样做?
看一下编译器输出:
简而言之,因为C#要求您明确地说“我知道以下操作将不同类型的值视为相同,所以请继续进行”。编译器不允许您“意外地”统一对待不同类型,您必须显式指定-通过使用(通用)超类(例如)object,或使用dynamic关键字将类型检查推迟到运行时。
object
dynamic