首页 技术 正文
技术 2022年11月16日
0 收藏 793 点赞 5,082 浏览 1275 个字

前言

说到底就是优先使用var,这个关键字,在c# 3.0中出现了。

首先要确认几点,一个就是var 是静态变量,而不是动态变量,也就是说使用var 你是不必去担心性能问题得,

百度百科:

1)静态存储变量通常是在变量定义时就分定存储单元并一直保持不变,直至整个程序结束。静态变量,全局动态变量都是静态存储2)动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放3)静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。通常把由于变量存储方式不同而产生的特性称为变量的生存期4)静态存储只会初始化一次

好的,既然其不会影响性能问题,也就是说我们写代码根据规范,那么问题不大。

正文

首先说明var 为什么出现,也就是其中的好处:

1.为了支持匿名类型机制。

2.解放我们的双手,让我们在轻易可以推断类型的情况下,可以用var 去代替,同样可以避免我们走入一些误区。如IQueryable和IEnumberable的区别。

那么使用var 该注意什么?

使用var,对我们的命名要求更高了。

 var some=createsomething();
var i=Factor.create(args);

这样写,可能会被打死。

使用var 的时候,对命名的要求更加高了。

如:

 var account=createaccount();
var boyList=Factor.create(args);

那么这时候我们就知道了变量account 是一个account 实例,boyList是一个list类型。

那么那些领域最好var 不要去使用呢?

1.一切的初始化,最好不要去用var。

var 会帮助我们推断初始化变量,比如我们使用var 去这样:

var student=new Student();

这就是一个坑,因为我们会参数歧义,var 可能是Istudent,或者其父类,会影响我们编程体验。

2.一切的计算,最好不要去使用var。

var d=1.1;
var total=d*100;

这时候total是double 类型的,那么问题关键是你想要total是double类型吗?可能是想要的是一个int。

而还可能出现这种情况:

var d=getresule(args);
var total=d*100;

args 代表参数,假如getresule 会根据参数的不同返回,int 或者 float。

那么很有可能在作者写code的时候,会忽略total的类型。

那么在什么情况下,最好使用var呢?linq情况下,最好使用var。

var q=from s in db.student
select s.name
var q2=q.where(s=>s.name=="张三");

IEnumberable<student> q=from s in db.student
select s.name
var q2=q.where(s=>s.name=="张三");

这两者区别非常大,第二个首先会查出所有的name,然后过滤张三。第一个则只是去数据库里查询张三。

总结

var 在不会在编译器产生误解的时候使用,一般在数据返回结果的时候使用,检验标准为能够立马知道数据的类型。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,910
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,435
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,250
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,061
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,693
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,731