Jon*_*eet 36
他们是巨大的不同.
如果你使用的dynamic
是选择动态类型,那么大多数时候选择退出编译时检查.是的,这比使用静态类型较少的高性能,您可以使用静态类型.
但是,object
无论如何你都不能对这个类型做太多的事情- 它几乎没有任何成员.你在哪里发现自己使用它?当你想编写可以使用各种类型的通用代码时,你通常应该考虑泛型而不是object
.
用简单的语言:
假设我们有以下方法:
public static void ConsoleWrite(string inputArg)
{
Console.WriteLine(inputArg);
}
Run Code Online (Sandbox Code Playgroud)
对象:以下代码有编译错误,除非将对象转换为字符串:
public static void Main(string[] args)
{
object obj = "String Sample";
ConsoleWrite(obj);// compile error
ConsoleWrite((string)obj); // correct
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
动态:下面的代码编译成功,但如果它包含一个值,除了string
它会抛出运行时错误
public static void Main(string[] args)
{
dynamic dyn = "String Sample";
ConsoleWrite(dyn); // correct
dyn = 1;
ConsoleWrite(dyn);// Runtime Error
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
随着C#语言的发展,我们已经看到,即使var类型也可以与动态和对象类型媲美。通过比较这7点,我了解了以下所有3种类型:
宾语
Var
动态
希望这会对某人有所帮助。
谢谢!