• c# 优化代码的一些规则——优先隐式类型[一]


    前言

    说到底就是优先使用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 在不会在编译器产生误解的时候使用,一般在数据返回结果的时候使用,检验标准为能够立马知道数据的类型。

  • 相关阅读:
    sql语句之case when null 解决方法
    sql server分组按顺序编号(转+补充)
    非IE用window.open弹出窗口并向父窗口传值
    IE6浏览器弹出窗口,父窗口传值
    sql之储存过程与函数的区别
    sql之执行事务性语句
    c#获取与筛选对象相匹配的所有DataRow对象数组
    ?: 运算符(C# 参考)
    Mysql 5.7优化
    libcurl.a 跨平台
  • 原文地址:https://www.cnblogs.com/aoximin/p/12955805.html
Copyright © 2020-2023  润新知