zoukankan      html  css  js  c++  java
  • C#一些基础记录

    1.从string[]转到List

    string[] str={"str","string","abc"};
    List<string> list=new List<string>(str);
    

    2.从List转到string[]

    List<string> list=new List<string>();
    listS.Add("XXX");
    listS.Add("XXX");
    string[] str=list.ToArray();
    

    C# 在while循环中new的对象

    每次循环都会new一个A?那内存不是会满吗?还是说要把这个初始化对象的动作放到循环外面的写法会比较好?

    while(true)
    {
        A a = new A();
        ...
        sleep(1000)
    }
    

    1、内存和性能

    如果一个对象实例被声明在循环内部,那么每次执行循环体时都会为对象重新分配内存并初始化对象实例。
    
    初始化过程并不会占用过多的时间,但是内存分配会。在某种情况下,你可能无法跑到循环外部去创建对象实例。
    
    不过,如果可能的话,重置并重用对象应该是更好的选择。
    

    2、可读性

    正如我针对基本数据类型喜欢在循环外部进行变量声明一样,只要有可能,我就会在循环内部重置对象实例而不是重新创建一个。
    
    当然,如果被使用的对象实例很小,并且循环的次数不多的话,那么这个问题就不是那么突出了。不过,对这个问题还是小心一点好
    

    3、结论

    如你所见,到底在循环内部或外部进行声明这个问题,对于对象而言是有差别的;而对于基本数据类型而言,则更多地是个人选择问题。
    
    我的个人观点是,如果能够在循环体中对对象实例进行重用,那么最好采用这种方案。
    
    从一致性角度讲,我相信将变量在循环体外部进行声明会更好。所以,如果你能对对象实例进行重用,那么你大可不必改变你的编码习惯。
    

    C# List<>与Array、ArrayList联系

    Array:

      Array初始化对象的时候必须要指定其大小

      抽象类,不能构造函数实例化一个Array(例如:Array arr = new Array[]错误)

      但是可以这样初始化一个Array类 Array arr = new int[3]{1,2,3};

      也可以使用Array类的CreateInstance方法来初始化 Array arr = Array.CreateInstance(typeof(int),3) 在这里定义了一个3个元素的int数组

    ArrayList:

      初始化的时候不必指定大小

      实例化一个对象后可以对这个对象中的元素添加、删除、修改等操作

      效率本身比Array的要低

    List<>:

      在.net framework 2.0之前,数组表示可以用Array 和集合类 ArrayList 表示,2.0后,.net 引进了泛型的概念List<>,那么我们的选择就多了一种。

      例如我们定义个int型的List:List list = new List();

      引进泛型其本意是减少类型的装箱拆箱所带来的性能消耗。

      同样我们可以对List泛型中的元素进行和ArrayList中的相同操作

    注:

      array的效率要比List的要高一些,当数组长度不是很大时,两者没什么区别,建议用List<>,毕竟是可变长度,可以Add;特殊应用还是建议用array,不提倡用ArrayList.

  • 相关阅读:
    Oracle SQL语句收集
    SqlParameter In 查询
    SQL 性能优化
    Entity Framework
    【XLL API 函数】 xlfSetName
    【XLL API 函数】xlfUnregister (Form 2)
    【XLL API 函数】xlfUnregister (Form 1)
    【Excel 4.0 函数】REGISTER 的两种形式以及VBA等效语句
    【Excel 4.0 函数】REGISTER
    【Bochs 官方手册翻译】 第一章 Bochs介绍
  • 原文地址:https://www.cnblogs.com/hong01072/p/14966301.html
Copyright © 2011-2022 走看看