匿名类型VS动态类型

<p>什么是匿名类型(VAR)之间的真正区别C#3.0的动态类型(动态)即将在C#4.0? P&gt;
</p>

41 浏览 1 回复
  类型   gt   em   动态   匿名  

回复

    <p>这是匿名类型是你创建的一个真实的,编译器生成的类型。关于这个的好处是,编译器可以在以后重新使用这种类型的需要,因为它是一个POCO等操作。 P&gt; </p><p>我的动态类型的理解是,他们是后期绑定,这意味着CLR(或DLR)将评估对象在执行时再使用鸭打字来允许或禁止成员访问对象。 P&gt; </p><p>所以我想不同的是,匿名类型是真正的波苏斯编译器可以看到,但你可以只使用和动态类型是后期绑定的动态对象。 P&gt; </p><p>您似乎是混合三种完全不同的,正交的事情: P&gt; </p><ul> <li>的<em>的静态与动态 em&gt;的输入 li&gt; <li>的<em>清单与隐 em&gt;的输入 li&gt; <li>的<em>命名主场迎战匿名 em&gt;的类型 li&gt; ul&gt; <p>这三个方面是完全独立的,他们毫不相干与对方。 P&gt; </p><p> <em>静态与动态 em&gt;的输入是指的<em>在 em&gt;的类型检查发生:动态类型发生在<em>运行 em&gt;的,静态类型发生&lt; EM&gt;运行之前 em&gt;的。 P&gt; <p> <em>清单与隐 em&gt;的打字指类型是否<em>清单中的源代码 em&gt;的或不:舱单打字指的<em>程序员 em&gt;的有写类型分为源代码,隐式类型指的<em>的类型系统 em&gt;的数字出来自己。 P&gt; <p> <em>命名主场迎战匿名 em&gt;的类型指的是,好了,类型是否有名称或没有。 P&gt; <p>本 关键字在C#4.0意味着这个变量,参数,方法,字段,属性...无论是的<em>动态类型 em&gt;的,即它的类型将在运行时进行检查。未输入动态一切是静态类型。无论类型是静态或动态的不仅决定时类型检查发生,但在C#4.0中它也决定了,当的<em>方法分派 em&gt;的发生。在C#中,方法分派在运行时之前进行,根据静态类型(除运行时亚型基因多态性,当然),而在C#4.0的动态类型的对象,方法分派是在运行的基础上,运行时类型。&lt; / P&gt; <p>本 关键字在C#3.0意味着这个局部变量会的<em>隐式类型 em&gt;的,即不是程序员明确写下的类型,该类型系统将数字出来自己。这无关动态类型,至少在C#3.0。该变量将受到强烈静态类型就好像你已经写下自己的类型。这仅仅是一个方便:比如,为什么你会在写下所有的类型名称的<em>两次 em&gt;的 当类型系统的<em>明确 em&gt;的弄清楚, 是,所以不是你写的。请注意,没有什么动态或匿名这个问题。的类型是静态的,它有一个名字:。当然,在C#4.0,如果该类型系统计算出的分配的右手边是动态的,则在左手侧的变量的类型将是动态的。 P&gt; <p>这是的<em>匿名类型 em&gt;的C#3.0中表示此类型没有名称。嗯,其实,的<em>真正 em&gt;的匿名类型将需要一个向后兼容的改变通用类型系统,还等什么的<em>实际上 em&gt;的发生幕后是,编译器会产生一个非常长,很随意的,独特的和非法的名称,类型,放在任何地方匿名类型显示该名称。但是从程序员的角度来看,该类型没有名字。这是为什么有用吗?嗯,有时候你有中间结果,你只需要简单地,然后扔掉了。给予这种类型的瞬间自己的名字将其提升到重要的水平,他们根本不值得。但同样,没有什么动态的这个问题。 P&gt; <p>因此​​,如果类型没有名字,怎么能程序员参考呢?好了,她不能!至少没有直接。什么是程序员的<em>可以 em&gt;的事,就是形容类型:它有两个属性,类型的一个名为“名”,另一种叫类型的“身份证”。这就是我想要的类型,但我不在乎它叫什么。 P&gt; <p>下面就是件开始走到一起。在C#中,你必须明确地写下来的类型的名称来声明局部变量的类型。但是,你怎么能写下来,有没有名称的类型的名称?这是其中 进来:因为自从C#3.0,这其实不再是真实的:你再也不用写下来的名字,你也可以告诉编译器看着办吧。所以,虽然我在第一段上面写的是真实的,那隐式类型和匿名类型没有什么关系等,这也是事实,匿名类型将不隐式类型很没用。 P&gt; </p><p>请注意,但是,相反的是不正确的:隐式类型是不匿名类型非常有用。 非常有意义,而且也没有匿名类型的视线。 P&gt;
    </p></em></p></em></em></em></p></em></em></em></p></em></em></p></em></p></em></em></em></em></p></em></em></em></p></em></li></em></li></em></li></ul>

    邹超友

相关信息

动态创建一个匿名类型? [重复]

<div class="“问题状态问题"> <p>这个问题已经在这里有一个答案: P&gt; </p><ul> <li> [如何充满活力的新匿名类?](/questions/3740021/how-to-dynamic-new-anonymous-class) 的 1回答 SPAN&gt; li&...

32 浏览 1 回复   gt   属性   动态   expandoobject   匿名  

静态类型的代码与动态类型的代码比较 - 成本和收益

<p>无论其可取之处,Adobe的ActionScript 3的呈现什么,可能是一个独特的机会去探索的类型化与非类型化语言的后果,因为它是非常严格的超集的javascript,有严格的类型声明的所有语法优点/开销,声明铸造等。 P&gt; </p><p>这是什么使得有可能在比较两种方式编写相同的代码,而分解出必要的语言的语法。 P&gt; <...

39 浏览 1 回复   类型   语言   gt   静态   动态  

动态UI VS静态UI

<p>我一直在想,什么时候我应该放弃与动态UI设计器支持静态数据录入形式,去掉了很多重复的代码带来的便利? P&gt; </p><p>有似乎是在编程世界发生冲突,人们不断尝试删除代码重复,提高可维护性,但是当它涉及到形式,这一切都窗外的一切都被明确地加入到形式。 p&gt; </p><p>我应该注意哪些迹象知道什么时候是时候离开了设计师中的灰尘,并创建一个动态UI? P&gt; </p>

22 浏览 1 回复   gt   ui   形式   动态   数据  

静态运行时库链接的Visual C ++ Express 2008的

<p>你怎么知道的Visual C ++ Express 2008的静态链接运行时库,而不是动态?我的前男友没有当前计算机上运行的w / o某种VS安装,我很想改变这种状况。 :) P&gt; </p>

37 浏览 1 回复   gt   运行   行时   链接   visual  

C#动态类型 - 天堂还是地狱?

<p>你认为新的动态类型为C#是一个关于强类型语言的优势,一个严重的缺点或者你认为的优点(如围绕这些沉重的思考越来越)大于风险? P&gt; </p>

38 浏览 1 回复   类型   使用   认为   动态   gt