c# var vs dynamic

本文介绍了C#编程语言中的var和dynamic两种变量类型的定义和区别。var是C#3.0引入的隐式类型变量,其类型在编译时由编译器推导,要求在声明时初始化。而dynamic是在C#4.0引入的,允许在运行时确定类型,不需在声明时初始化。var主要用于简化LINQ查询等特定情况,而dynamic则提供动态绑定能力,常用于与非.NET框架交互。两者在使用场景和类型检查上存在显著差异。

var

  • 定义
    隐式类型局部变量 – var 是那些在未明确指定 .NET 类型的情况下声明的变量。 在隐式类型变量中,变量的类型在编译时由编译器从用于初始化变量的值中自动推导出来。 C# 3.0 中引入了隐式类型变量的概念。 隐式类型变量并非旨在取代普通变量声明,它旨在处理一些特殊情况,如 LINQ(语言集成查询)。

dynamic

  • 定义
    在 C# 4.0 中,引入了一种称为动态类型的新类型。 它用于避免编译时类型检查。 编译器不会在编译时检查动态类型变量的类型,而是编译器在运行时获取类型。 动态类型变量是使用 dynamic 关键字创建的。

对比

vardynamic
在 C# 3.0 中引入在 C# 4.0 中引入
使用 var 关键字声明的变量是静态类型的使用dynamic关键字声明的变量是动态类型的
变量的类型由编译器在编译时决定变量的类型由编译器在运行时决定
这种类型的变量应该在声明时初始化。这样编译器就会根据它初始化的值来决定变量的类型这种类型的变量不需要在声明时初始化。因为编译器在编译时并不知道变量的类型
如果变量未初始化,则会引发错误如果变量未初始化,则不会引发错误
var myvalue = 10; myvalue = “GeeksforGeeks”, 这里编译器会抛出一个错误,因为编译器已经使用语句 1 确定了 myvalue 变量的类型,它是一个整数类型。当您尝试将字符串分配给 myvalue 变量时,编译器将给出错误,因为它违反了安全规则类型dynamic myvalue = 10; myvalue = “GeeksforGeeks”, 在这里,尽管 myvalue 的类型是整数,但编译器不会抛出错误。当您将字符串分配给 myvalue 时,它​​会重新创建 myvalue 的类型并接受字符串而不会出现任何错误
它不能用于属性或函数的返回值。它只能用作函数中的局部变量它可用于属性或从函数返回值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值