[C#3] 2-var 类型推断
1.DEMO
static void Main() { var Num = 6; var str = "乱舞春秋"; var dou = 9.25d; Console.WriteLine(Num); Console.WriteLine(str); Console.WriteLine(dou); }
var关键字,用来声明并初始化局部变量。编译器根据=右边的语句推断出变量实际的类型。 所以使用var的要求就是右边的语句必须可以让编译器推断出实际的类型。所以=号右边是必须要有值的,即是必须要初始化,不能只是声明。 但是有些不便于阅读代码了。于此同时,C#3.0的出现另一个新特性[匿名类型]给了var用武之地。
var并不是表示弱类型了,如下IL代码:
1 .method private hidebysig static void Main() cil managed 2 { 3 .entrypoint 4 // 代码大小 41 (0x29) 5 .maxstack 1 6 .locals init ([0] int32 Num, 7 [1] string str, 8 [2] float64 dou) 9 IL_0000: nop 10 IL_0001: ldc.i4.6 11 IL_0002: stloc.0 12 IL_0003: ldstr bytearray (71 4E 1E 82 25 66 CB 79 ) 13 IL_0008: stloc.1 14 IL_0009: ldc.r8 9.25 15 IL_0012: stloc.2 16 IL_0013: ldloc.0 17 IL_0014: call void [mscorlib]System.Console::WriteLine(int32) 18 IL_0019: nop 19 IL_001a: ldloc.1 20 IL_001b: call void [mscorlib]System.Console::WriteLine(string) 21 IL_0020: nop 22 IL_0021: ldloc.2 23 IL_0022: call void [mscorlib]System.Console::WriteLine(float64) 24 IL_0027: nop 25 IL_0028: ret 26 } // end of method Test::Main
从第6-8行就可看出编译器做了正确的类型推断。
2.总结
var为编译器技巧,语法糖。匿名类型须此关键字搭配使用
作者:Blackheart
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义