新的“dynamic”C#4.0关键字是否弃用了“var”关键字?当C#4.0出现时,我们有了动态关键字,正如AndersHejlsberg在这个出色的演示文稿中所描述的那样(C#的发展速度快于我跟不上......我没有太多时间来熟悉var关键字)我还需要var关键字?var能做什么...不能动态?varx=SomeFunctionThatIKnowReturnsSomeKindOfList();//用x做一些事情dynamicx=SomeFunctionThatIKnowReturnsSomeKindOfList();//dosomethingwithx不,它们非常不同。var的意思是“变量的类型是在编译时推断出来的”——但它仍然是完全静态绑定的。动态意味着“假设我可以用这个变量做任何事情”——即编译器不知道有哪些操作可用,DLR将在执行时确定调用的真正含义。我希望dynamic很少被使用——只有当我真的想要动态行为时才使用:Dynamic和var代表两个完全不同的想法。VARVar基本上要求编译器根据赋值语句右侧的表达式计算变量的类型。然后该变量被视为好像它被显式声明为表达式的类型。例如,下面两个语句是等价的vara="foo";字符串a="foo";这里的关键是“var”是100%类型安全的,并且是编译时操作。Dynamic在很多方面与var相同,但完全相反。使用dynamic基本上消除了特定变量的所有类型安全。它在很多方面都没有类型。当在变量上调用方法或字段时,将在运行时确定如何调用该字段。例如动态d=SomeOperation();d.Foo();//这会不会失败?在运行程序之前不会知道这里的关键要点是“动态”不是类型安全的,运行时操作是您还需要var:Var是一个变量,其类型将由编译器推断。dynamic将在运行时分配其类型,因此:Vari="HelloWorld"将其类型推断为字符串类型这样做智能将为您提供字符串可以使用的所有方法,如i.Split("/")if:dynamici="HelloWorld"直到运行时才会推断它的类型,因为编译器不知道它是什么类型,但仍然会让你这样做:i.Split("/")但是当它调用你需要的方法时,它可能会失败,因为类型错误,方法不存在。以上是C#学习教程:Willthenew"dynamic"C#4.0keyworddeprecatethe"var"keyword?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
