| var | dynamic |
|---|---|
| 在 C# 3.0 中引入 | 在 C# 4.0 中引入 |
| 使用 var 关键字声明的变量是静态类型的 | 使用dynamic关键字声明的变量是动态类型的 |
| 变量的类型由编译器在编译时决定 | 变量的类型由编译器在运行时决定 |
| 这种类型的变量应该在声明时初始化。这样编译器就会根据它初始化的值来决定变量的类型 | 这种类型的变量不需要在声明时初始化。因为编译器在编译时并不知道变量的类型 |
| 如果变量未初始化,则会引发错误 | 如果变量未初始化,则不会引发错误 |
| var myvalue = 10; myvalue = “GeeksforGeeks”, 这里编译器会抛出一个错误,因为编译器已经使用语句 1 确定了 myvalue 变量的类型,它是一个整数类型。当您尝试将字符串分配给 myvalue 变量时,编译器将给出错误,因为它违反了安全规则类型 | dynamic myvalue = 10; myvalue = “GeeksforGeeks”, 在这里,尽管 myvalue 的类型是整数,但编译器不会抛出错误。当您将字符串分配给 myvalue 时,它会重新创建 myvalue 的类型并接受字符串而不会出现任何错误 |
| 它不能用于属性或函数的返回值。它只能用作函数中的局部变量 | 它可用于属性或从函数返回值 |