zoukankan      html  css  js  c++  java
  • 编程经验(C#)

    本文记录我在编程里学到的一些小技巧,遇到了就记录一下。

    1.如果通用接口中的回调没有参数,而调用时需要参数,这个时候可以用匿名函数多封装一层。例如:

     1 Private void Main()
     2 {
     3     Fun(() =>
     4     {
     5         Fun2(0);
     6     });
     7 }
     8 
     9 private void Fun(Action callBack)
    10 {}
    11 
    12 private void Fun2(int a)
    13 {}

     2.List使用lambda表达式升序或降序排序

    1 private List<int> list = new List<int>();
    2 
    3 private void Sort()
    4 {
    5     list.Sort((lsh, rhs) => lsh - rhs);//  升序
    6     list.Sort((lsh, rhs) => rhs - lsh);//  降序
    7 }
    View Code

     3.对bool类型赋值尽量不要使用判断语句来赋值true 或者 false,而是把判断语句写到对bool变量赋值时。

     1     private int a = 0;
     2     private bool IsZero;
     3 
     4     private void Init()
     5     {
     6         IsZero = a == 0;//  正确
     7 
     8         //  下面这种写法尽量避免
     9         if (a == 0)
    10         {
    11             IsZero = true;
    12         }
    13         else
    14         {
    15             IsZero = false;
    16         }
    17     }
    View Code

     4.使用string.IsNullOrEmpty 代替 str == null || str == string.Empty

    5.避免使用一大串的if else。和一大串的switch。可以用数组来代替。

     1     private bool A1;
     2     private bool A2;
     3     private bool A3;
     4     private bool A4;
     5     private bool A5;
     6 
     7     private int currentId = 1;
     8 
     9     private int mTarge = 0;
    10 
    11     private void Init()
    12     {
    13         var targs = new[] {A1, A2, A3, A4, A5};
    14         targs[currentId - 1] = false;
    15 
    16         for (int i = 0; i < targs.Length; i++)
    17         {
    18             if (targs[i])
    19             {
    20                 mTarge = 1;
    21                 break;
    22             }
    23         }
    24         //  用上面的代码代替下面的代码
    25         //switch (currentId)
    26         //{
    27         //    case 1:
    28         //        A1 = false;
    29         //        break;
    30         //    case 2:
    31         //        A2 = false;
    32         //        break;
    33         //    case 3:
    34         //        A3 = false;
    35         //        break;
    36         //    case 4:
    37         //        A4 = false;
    38         //        break;
    39         //    case 5:
    40         //        A5 = false;
    41         //        break;
    42         //}
    43 
    44         //if (A1)
    45         //{
    46         //    mTarge = 1;
    47         //}
    48         //else if (A2)
    49         //{
    50         //    mTarge = 1;
    51         //}
    52         //else if (A3)
    53         //{
    54         //    mTarge = 1;
    55         //}
    56         //else if (A4)
    57         //{
    58         //    mTarge = 1;
    59         //}
    60         //else if (A5)
    61         //{
    62         //    mTarge = 1;
    63         //}
    64     }
    View Code

    6.对于不明来路的效果,一定要断点查看堆栈,保持这个好习惯,找到问题的根源而不是去猜测。

    7.任何可能会为null的变量,使用时都要进行判空。

    8.计算一段程序的运行时间

    1 Stopwatch stopwatch = new Stopwatch();//  用来计算程序运行时间
    2 stopwatch.Start();//  计算开始
    3 
    4 //.....要执行的代码        
    5 
    6 stopwatch.Stop();//  计算结束
    View Code

     9.每秒显示一次当前时间,需要在可以不停的访问的地方进行调用。

     1 private DateTime mLastRefreshTime = DateTime.MaxValue;
     2 
     3 public void RefreshTime(DateTime now)
     4 {
     5     var transitionTime = now;
     6     if(mLastRefreshTime == DateTime.MaxValue)
     7     {
     8         mLastRefreshTime = transitionTime; 
     9         return;
    10     }
    11 
    12     if(transitionTime.Second != mLastRefreshTime.Second)
    13     {
    14         //  进入这里说明已经过去了一秒。
    15     }
    16 }

     更新日期:2018/7/19/18 : 01

  • 相关阅读:
    什么是 Hystrix?它如何实现容错?
    什么是 Spring Cloud Bus?我们需要它吗?
    SpringBoot和SpringCloud的区别?
    Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
    REST 和RPC对比?
    XML技术的作用?
    iHTML 的 form 提交之前如何验证数值文本框的内容全部为数字
    XML常用解析API有哪几种?
    XML的解析方式有哪几种?有什么区别?
    XML文档约束有哪几种?有什么区别?
  • 原文地址:https://www.cnblogs.com/dawenhao/p/8692825.html
Copyright © 2011-2022 走看看