zoukankan      html  css  js  c++  java
  • 数组

    1,所有数组都隐式派生自System.Array

    2,所有数组都隐式实现IEnumerable,ICollecation,IList

    ①创建一个0基数组类型时,CLR自动是数组类型实现IEnumberable<T>,ICollection<T>,IList<T>。同时,还为数组类型的所有基类型实现这三个接口。以下层次结构图对此进行了澄清

    Object

             Array(非泛型IEnumberable,ICollection,IList)

                       Object[](IEnumberable,ICollection,IList of Object)

                                Stream[](IEnumberable,ICollection,IList of Stream)

                                         FileStream[](IEnumberable,ICollection,IList of FileStream)

    ②如果数组包含值类型的元素,数组类型不会为元素的基类型实现接口(DateTime[] dtArray)

    3,创建下限非零的数组

            static void Main(string[] args)
            {
    
                //下届非0的二维数组
                int[] lowerBounds = {2015, 1};//下界
                int[] lengths = {5, 4};//它包含要创建的 System.Array 的每个维度的大小
    
                var d = (decimal[,]) Array.CreateInstance(typeof (decimal), lengths, lowerBounds);
    
                Console.WriteLine(d.GetLowerBound(0));//1维第一个元素的索引。输出2015
                Console.WriteLine(d.GetUpperBound(0));//1维最后一个元素的索引。输出2019
                Console.WriteLine(d.GetLowerBound(1));//2维第一个元素的索引。输出1
                Console.WriteLine(d.GetUpperBound(1));//2维最后一个元素的索引。输出4
    
    
                Console.ReadKey();
    
            }

    4,CLR内部实际支持两种不同的数组
    ①下限为0的一维数组。这些数组有时称为SZ(一维0基)数组或向量
    ②下限未知的一维或多维数组

            static void Main(string[] args)
            {
                Array a;
                //创建一维0基数组,不包含任何元素
                a = new string[0];
                Console.WriteLine(a.GetType());//System.String[]
    
                //创建一维0基数组,不包含任何元素
                a = Array.CreateInstance(typeof (String), new int[] {0}, new int[] {0});
                Console.WriteLine(a.GetType());//System.String[]
    
                //创建一维1基数组,不包含任何元素
                a = Array.CreateInstance(typeof(String), new int[] { 0 }, new int[] { 1 });
                Console.WriteLine(a.GetType());//System.String[*]  *符号表明CLR知道该数组不是0基的
    
                //创建二维0基数组,不包含任何元素
                a = new string[0,0];
                Console.WriteLine(a.GetType());//System.String[,]
    
                //创建二维0基数组,不包含任何元素
                a = Array.CreateInstance(typeof(String), new int[] { 0,0 }, new int[] { 0,0 });
                Console.WriteLine(a.GetType());//System.String[,]
    
                //创建二维1基数组,不包含任何元素
                a = Array.CreateInstance(typeof(String), new int[] { 0,0 }, new int[] { 1,1 });
                Console.WriteLine(a.GetType());//System.String[,]
    
                Console.ReadKey();
            }

    在运行时,CLR将所有的多维数组都视为非0基数组
    访问一维0基数组的元素比访问非0基一维或多维数组的元素稍快

    学习永不止境,技术成就梦想。
  • 相关阅读:
    ubuntu segmentation fault 段错误
    css配合js模拟的select下拉框
    让IE6下支持固定定位
    max-height,min-height在IE下不支持的解决方法
    图片居中
    完美运动框架,随意调用,兼容性好
    JS创建Ajax的XMLHttpRequest对象的通用方法
    JS兼容性问题(FF与IE)
    css样式
    html之marquee详解[转]
  • 原文地址:https://www.cnblogs.com/zd1994/p/6938068.html
Copyright © 2011-2022 走看看