上一篇:

C#,入门教程(15)——类(class)的基础知识https://blog.csdn.net/beijinghorn/article/details/124012719

一、权威说法

先看看 微软 怎么说?

从 C# 3.0 开始,在方法范围内声明的变量可以具有隐式“类型”var。 隐式类型本地变量为强类型,就像用户已经自行声明该类型,但编译器决定类型一样。 i 的以下两个声明在功能上是等效的:

var i = 10; // Implicitly typed.
int i = 10; // Explicitly typed.

重要

在启用var的情况下使用 var 时,即使表达式类型不可为空,也始终表示可为空引用类型。 编译器的 null 状态分析可防止取消引用潜在的 null 值。 如果从未向可能为 null 的表达式分配该变量,编译器将不会发出任何警告。 如果将该变量分配给可能为 null 的表达式,则必须先测试其是否为 null,然后才能将其取消引用,以避免出现任何警告。

var 关键字的常见用途是用于构造函数调用表达式。 使用 var则不能在变量声明和对象实例化中重复类型名称,如下面的示例所示:

var xs = new List<int>();

从 C# 9.0 开始,可以使用由目标确定类型的 表达式作为替代方法:

List<int> xs = new();
List<int>? ys = new();

在模式匹配中,在 var中使用 var 关键字。

示例

下面的示例演示两个查询表达式。 在第一个表达式中,var 的使用是允许的,但不是必需的,因为查询结果的类型可以明确表述为 IEnumerable<string>。 不过,在第二个表达式中,var 允许结果是一系列匿名类型,且相应类型的名称只可供编译器本身访问。 如果使用 var,便无法为结果新建类。 请注意,在示例 #2 中,foreach 迭代变量 item 必须也为隐式类型。

// Example #1: var is optional when
// the select clause specifies a string
string[] words = { "apple", "strawberry", "grape", "peach", "banana" };
var wordQuery = from word in wordswhere word[0] == 'g'select word;// Because each element in the sequence is a string,
// not an anonymous type, var is optional here also.
foreach (string s in wordQuery)
{Console.WriteLine(s);
}// Example #2: var is required because
// the select clause specifies an anonymous type
var custQuery = from cust in customerswhere cust.City == "Phoenix"select new { cust.Name, cust.Phone };// var must be used because each item
// in the sequence is an anonymous type
foreach (var item in custQuery)
{Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone);
}

二、问题的答案

1、不得不用的场景

Linq 场景显然不得不用,否则代码的阅读性就比较差啦。

2、其他场合都不应该使用!

为什么?没有合作精神!

var 只是编写程序的时候方便?但如果以后自己或他人来阅读代码的时候,都不知道变量的实际类型是 int 还是 double ,多么的无语?python,java 等语言大量使用 隐匿变量,导致程序员的无聊工作大量增加,不得不靠人力堆积才解决问题。程序员的精力几乎都耗费在修修补补上了。

写程序要多为别人和以后的自己着想!

下一篇:

C#,入门教程(17)——条件语句(if-else)的基础知识https://blog.csdn.net/beijinghorn/article/details/124033376

C#,入门教程(16)——可变数据类型(var)的基础知识与使用禁忌相关推荐

  1. DirectX11入门教程——第二篇:DirectX11的基础知识

    本系列系作者原创,可随便转发但一定要注明出处 刚才明明说尽量不跳章的,为啥一进来就变成第二章,这里首先用几句话说明一下原因:因为第一章我想留给更基础更概念的GPU发展史和管线描述.在此对不起大家了.不 ...

  2. 人工智能入门需要学习哪些课程?AI基础知识

    要入门人工智能,需要掌握一些基础知识和技能.以下是一些入门人工智能需要学习的课程和基础知识: 人工智能入门需要学习哪些课程?AI基础知识 数学基础:人工智能需要用到许多数学知识,包括线性代数.微积分. ...

  3. 画出识别c语言注释的转换图,C语言程序设计基础与实训教程》第1章:基础知识.ppt...

    <C语言程序设计基础与实训教程>第1章:基础知识.ppt>由会员分享,可在线阅读,更多相关<C语言程序设计基础与实训教程>第1章:基础知识.ppt(25页珍藏版)> ...

  4. 教室计算机文件共享方法,教程方法;34、共享文件--电脑基础知识电脑技巧-琪琪词资源网...

    琪琪词资源网-教程方法;34.共享文件--电脑基础知识电脑技巧,以下是给大家带来的教程方法;34.共享文件--电脑基础知识,大家可以了解一下哦! 在一个几台机子连成的网络里,相互之间可以通过网上邻居共 ...

  5. 网络技术入门(一):网络技术基础知识系统归结

    <网络技术入门>系列文章,分别从宏观硬件和微观数据传输角度说明网络传输过程.请期待后续系列文章. 自己写文章习惯性在每一个小节上做总结,有时候方便理解可以先看总结的内容. 本章主要是总结性 ...

  6. Python 可变数据类型和不可变数据类型 - Python零基础入门教程

    目录 一.关于内存 二.可变数据类型和不可变数据类型 1.可变数据类型和不可变数据类型区别 2.不可变数据类型 3.可变数据类型 三.重点总结 四.猜你喜欢 零基础 Python 学习路线推荐 : P ...

  7. python3入门教程-python3入门教程之基本数据类型(一)

    概述 关于python3的一些基础知识,如果不是常用的话比较容易忘记,在这边整理下. 一.关于python中的变量 python中的变量不需要声明 每个变量在使用之前必须赋值,变量赋值之后,该变量才被 ...

  8. 神仙级python入门教程(非常详细),从零基础入门到精通,从看这篇开始!

    一.初聊Python 1.为什么要学习Python? 在学习Python之前,你不要担心自己没基础或"脑子笨",我始终认为,只要你想学并为之努力,就能学好,就能用Python去做很 ...

  9. 神仙级Python入门教程(非常详细),从零基础入门到精通,从看这篇开始

    一.初聊Python 1.为什么要学习Python? 在学习Python之前,你不要担心自己没基础或"脑子笨",我始终认为,只要你想学并为之努力,就能学好,就能用Python去做很 ...

最新文章

  1. 两帧点云刚性配准的ICP算法
  2. 让浏览器不记住表单元素输入过的内容
  3. 嵌入式新人发展的总体方向
  4. scala集合fold实例:将两个Map合并
  5. rsync远程数据同步工具的使用
  6. (二)Docker配置修改阿里云镜像仓库
  7. ecshop活动页_ECSHOP团购活动,ECSHOP团购列表
  8. JDK 之 HttpClient(jdk11)
  9. 热修复 阿里的AndFix
  10. java编程给三个数字排序_JAVA程序.输入3个数字,有IF语句,从小到大排序
  11. concurrentHashMap扩容细节
  12. 51单片机2个按钮逻辑设计http://www.51hei.com/bbs/forum.php?mod=viewthreadtid=165521page=1#pid720113
  13. 彻底删除VMware !!!
  14. #(九)、江恩关注的古代数理必要的解读
  15. 编辑为什么建议转投_论文被退稿建议转投他刊是什么意思?
  16. 嵌入式lab3——自行车码表
  17. golang调用aliyun的语音通话
  18. MFC使用CButtonST类实现按钮图片功能
  19. R语言之Rstudio 导入包
  20. excel表格汇总数据之汇总关键词工作表

热门文章

  1. 前端实现五子棋小游戏1(本地双人对战)
  2. 将一个spine的骨骼绑定到另一个spine的骨骼上
  3. NSThread中cancle与exit的使用
  4. 何以解忧,唯有泡妞——我和聊天机器人有个约会
  5. G.711 音频编码
  6. (三)利用ffmpeg实现简单的MP4推流
  7. [BZOJ2151]种树
  8. python cms模板_python基础-第一个python程序
  9. 2-3 计算机的主存储器和辅助存储器及高速缓存
  10. 宝马工程师E-SYS中文版软件