• var 隐式类型变量和匿名类型 vs dynamic 动态类型。


    1.C#3.0开始引入了隐式类型变量var和匿名类型,如下:

    var v = new { Amount = 1, Message = "he" };
    Response.Write("111111111111111111<BR>2" + v);

    实际上v这个变量, 编译以后, .net自动生成了一个f_AnonymousType0的类.

    [CompilerGenerated, DebuggerDisplay(@"\{ Amount = {Amount}, Message = {Message} }", Type="<Anonymous Type>")]
    internal sealed class <>f__AnonymousType0<<Amount>j__TPar, <Message>j__TPar>
    {
        // Fields
        [DebuggerBrowsable(DebuggerBrowsableState.Never)]
        private readonly <Amount>j__TPar <Amount>i__Field;
        [DebuggerBrowsable(DebuggerBrowsableState.Never)]
        private readonly <Message>j__TPar <Message>i__Field;

        // Methods
        [DebuggerHidden]
        public <>f__AnonymousType0(<Amount>j__TPar Amount, <Message>j__TPar Message);
        [DebuggerHidden]
        public override bool Equals(object value);
        [DebuggerHidden]
        public override int GetHashCode();
        [DebuggerHidden]
        public override string ToString();

        // Properties
        public <Amount>j__TPar Amount { get; }
        public <Message>j__TPar Message { get; }
    }

    隐式类型变量var v和匿名类型主要用于LINQ.

    2.dynamic

    dynamic是.net 4.0引入的,var和dynamic完全是两个概念,不是一码事。var实际上是编译期抛给我们的“语法糖”,一旦被编译,编译期会自动匹配var 变量的实际类型,并用实际类型来替换该变量的申明,这看上去就好像我们在编码的时候是用实际类型进行申明的。而dynamic被编译后,实际是一个object类型,只不过编译器会对dynamic类型进行特殊处理,让它在编译期间不进行任何的类型检查,而是将类型检查放到了运行期。

    具体参见:改善C#程序的建议2:C#中dynamic的正确用法 http://www.cnblogs.com/luminji/archive/2011/02/18/1957484.html

    var主要用于LINQ, 那dynamic呢? 可以简化反射。

    作者:BobLiu
    邮箱:lzd_ren@hotmail.com
    出处:http://www.cnblogs.com/liuzhendong
    本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    java实现第二届蓝桥杯四方定理
    java实现第二届蓝桥杯四方定理
    java实现第二届蓝桥杯四方定理
    JPos学习
    Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
    java使用Thumbnailator操作图片
    Python的另一种开发环境--Anaconda中的Spyder
    Java多线程干货系列—(四)volatile关键字
    Java多线程干货系列—(二)synchronized
    Java多线程干货系列—(一)Java多线程基础
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/2130644.html
Copyright © 2020-2023  润新知