• 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.

  • 相关阅读:
    shell 命名管道,进程间通信
    bash shell:重定向标准错误输出
    paramiko socket.error: Int or String expected
    django csrf_token生成
    shell基础知识
    复制vi全部内容到windows ctrl+shift+c
    linux配置bridge (不同网段)
    sdk shell下脚本.soc
    X86服务器BMC基板管理控制器介绍
    linux 开启vnc
  • 原文地址:https://www.cnblogs.com/hong01072/p/14966301.html
Copyright © 2020-2023  润新知