zoukankan      html  css  js  c++  java
  • 数组 CLR学习第十三课 狼

    一、数组是引用类型,值类型的数组也是引用类型。
     
    二、int[] myint;  myint = new int[100];
    首先myint被神秘为一个指向元素类型int的一维数组变量,此时myint被设置为null

    。当分配100个int的数组时,所有这些int元素值都被初始化为0.虽然int属于值类型

    ,单保存这些int值的内存块却是从托管堆中分配的。该内存包含100个为装箱的int

    值,最后代码返回保存这些int值的内存块地址,并将其保存在变量myint中。

    Control[] myCtr; myCtr= new Control[50];
    首先myCtr被设置为null,然后分配一个包含50个Control引用的数组,所有这些

    Control的引用都被初始化为null,因为Control属于引用类型,所有我们创建的仅仅

    是引用,而不是实际的对象,最后代码返回保存这些引用的内存地址,并将其保存在

    变量myCtr中。

    三、尽可能使用0基数组,在各种类型数组中其性能最好,兼容CLS(交错数组不兼容

    CLS);索引超出抛出System.IndexOutOfRangeException异常。

    四、所有数组继承自System.Array,其共实现了ICloneable、IEnumerable、

    ICollection、IList接口;CLR不允许将元素为值类型的数组转换为其他任何类型,

    其是通过,Array.Copy(将值类型装箱为引用类型;将引用类型装箱为值类型,拓宽

    CLR基元类型)创建来实现的,并且其是浅拷贝。引用类型元素的数组,可以实现显

    示或者隐式转换为另一种类型。
    五、数组总是以引用的方式传递给方法的,Array.Copy是浅拷贝,如果源数组中的元

    素是引用类型,该方法返回的新数组中的元素将指向源数组中元素所引用的对象;实

    现数组的深拷贝方法是实现ICloneable接口,将一个对象序列化到一个

    System.IO.MemoryStream中,然后再立即对该内存流执行反序列化,从而得到一个新

    的对象,性能损失、有可能所有的对象都被序列化。

    六、可以创建下限非0的数组,用Array.CreateInstance方法。

  • 相关阅读:
    算法训练 表达式计算
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    New ways to verify that Multipath TCP works through your network
    TCP的拥塞控制 (Tahoe Reno NewReno SACK)
    Multipath TCP Port for Android 4.1.2
    How to enable ping response in windows 7?
    NS3
    Multipath TCP Port for Android
  • 原文地址:https://www.cnblogs.com/gowhy/p/2013663.html
Copyright © 2011-2022 走看看