C# dynamic、var、object关键字说明

本文仅为个人理解,如有错误请指正。

var:实际上编译器抛给我们的语法糖,一旦被编译,编译器就会自动匹配var变量的实际类型,并用实际类型来替换该变量的声明,等同于我们在编码时使用了实际类型声明,使用var声明的变量,赋值必须与声明时候的类型一致。

dynamic:Net 4.0中新增功能 动态语言运行时,在运行时确定其类型,被编译后是一个Object类型,编译器编译时不会对dynamic进行类型检查,daynamic声明的变量,可以随意进行赋值,dynamic类型的实例与其他类型的实例进行转换时很简单的直接赋值即可。

object:Object类型,因为object是一切类型基类,任何类型可以直接赋值给object类型。

举例:

        private void button5_Click(object sender, EventArgs e)
        {
            var varObj = "123";
            //System.String
            Debug.WriteLine(varObj.GetType().FullName);

            dynamic dynamicObj = 1;
            //System.Int32
            string typeName = dynamicObj.GetType().FullName;
            dynamicObj = '2';
            //System.Char
            typeName = dynamicObj.GetType().FullName;
            char charObj = dynamicObj;
            dynamicObj = "123";
            //System.String
            typeName = dynamicObj.GetType().FullName;
            string stringObj = dynamicObj;

            object obj = 123;
            //System.Int32
            Debug.WriteLine(obj.GetType().FullName);
            obj = "123";
            //System.String
            Debug.WriteLine(obj.GetType().FullName);
        }

概念补充:

编程语言可以文化分为静态类型化语言和动态类型化语言.C#和JAVA被认为静态化类型的语言,Python,Ruby和JavaScript是动态类型语言

一般而言,动态语言在编译时不会对类型进行检查,而是在运行时识别对象的类型.代码编写更快,更容易,但无法获取编译错误。只能通过单元测试和其他方式来确保应用的正常运行。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值