小编典典

动态(C#4)和var和有什么区别?

c#

我已经阅读了很多有关C#v4附带的新关键字的文章,但是我看不出“ dynamic”和“ var”之间的区别。

这篇文章让我考虑了一下,但是我仍然看不到任何区别。

您是否只能将“ var”用作局部变量,但可以同时用作局部变量和全局变量?

您能显示一些没有动态关键字的代码,然后再显示具有动态关键字的相同代码吗?


阅读 248

收藏
2020-05-19

共1个答案

小编典典

var是静态类型的-编译器和运行时 知道 类型-它们只是为您节省了一些类型…以下是100%相同的:

var s = "abc";
Console.WriteLine(s.Length);

string s = "abc";
Console.WriteLine(s.Length);

发生的所有事情是 编译器
发现s必须是一个字符串(来自初始化程序)。在两种情况下,它都知道(在IL中)s.Length意味着(实例)string.Length属性。

dynamic完全 不同的野兽;它与最为相似object,但是具有动态分配功能:

dynamic s = "abc";
Console.WriteLine(s.Length);

在这里,s键入 为dynamic 。它不知道string.Length,因为它不知道 任何
有关s在编译时。例如,以下代码也将编译(但不运行):

dynamic s = "abc";
Console.WriteLine(s.FlibbleBananaSnowball);

在运行时(仅),它将 检查FlibbleBananaSnowball属性-找不到它,并在火花中爆炸。

使用dynamic,可以 在运行时
根据实际对象解析属性/方法/运算符/等。与COM(可以具有仅运行时属性),DLR或其他动态系统(例如)交谈非常方便javascript

2020-05-19