zoukankan      html  css  js  c++  java
  • C# ArrayList方法 Add AddRange BinarySearch Clear Contains CopyTo

    CopyTo讲了三种方法

    所以篇幅可能会比较长

      1         static void Main(string[] args)
      2         {
      3             //ArrayList方法
      4 
      5             //Add
      6             //将对象添加到ArrayList的结尾处
      7             int i, j, k;
      8             ArrayList a = new ArrayList() { "", "" };
      9             //给a添加对象
     10             a.Add("");
     11             a.Add("");
     12             /*
     13             foreach (int i in a )
     14             Console.WriteLine("{0}", i );
     15             这里报错了
     16             因为foreach不能对ArrayList集合进行操作
     17              */
     18 
     19             for (i = 0; i < a.Count; i++)
     20             {
     21                 Console.WriteLine("{0}", a[i]);
     22             }
     23             //输出结果表明,Add方法是直接将对象加到ArrayList的后面。
     24 
     25             Console.WriteLine("/////////////////////////////////");
     26 
     27             ArrayList b = new ArrayList() { };
     28             b.Add("");
     29             b.Add("");
     30             for (i = 0; i < b.Count; i++)
     31             {
     32                 Console.WriteLine("{0}", b[i]);
     33             }
     34             //这里我们也可以看出来,Add方法也可以直接对空的ArrayList添加值
     35             Console.WriteLine("/////////////////////////////////");
     36 
     37             //ArrayList.AddRage
     38             //将一个元素添加到ArrayList末尾,即一个集合
     39             a.AddRange(b);
     40             for (i = 0; i < a.Count; i++)
     41             {
     42                 Console.WriteLine("{0}", a[i]);
     43             }
     44             //从这里就看出来了,b已经被添加在了a的末尾了
     45 
     46 
     47             //Array.BinarySearch//二元检索法
     48             //在已经排序的ArrayList中检索对应元素。
     49             Console.WriteLine("/////////////////////////////////");
     50 
     51             a.Sort();//我们现在对a进行排序
     52             Console.WriteLine("{0}", a.BinarySearch(""));//4
     53             //返还的是一个正数,说明排序成功,BinarySearch也没有返还一个错误的值
     54             //那字符串是怎么排序的呢》
     55             //我们全部输出来看一下
     56             Console.WriteLine("/////////////////////////////////");
     57             for (i = 0; i < a.Count; i++)
     58             {
     59                 Console.WriteLine("{0}", a[i]);
     60             }
     61             //结果是:逼逼傻傻是我
     62 
     63             a.Reverse();//补充方法,Sort是正序排列,
              //而Reverse是反转序列,而不会像Sort一样进行排序
    64 Console.WriteLine("/////////////////////////////////"); 65 for (i = 0; i < a.Count; i++) 66 { 67 Console.WriteLine("{0}", a[i]); 68 } 69 70 //ArrayList.Clear 71 //清除集合内的所有元素 72 b.Clear(); 73 Console.WriteLine("/////////////////////////////////"); 74 for (i = 0; i < b.Count; i++) 75 { 76 Console.WriteLine("{0}", b[i]); 77 } 78 //因为b中的所有元素已经被清除了,所以就没有了内容,b.Count==0,for循环直接启动 79 80 //ArrayList.Contains 81 //检查某个元素是否在集合内,这里返还的是Boolen值 82 b.Contains(1); 83 Console.WriteLine("/////////////////////////////////"); 84 Console.WriteLine("b中有1吗?{0}", b.Contains(1));//False 85 Console.WriteLine("a中有逼吗?{0}", a.Contains(""));//True 86 87 //ArrayList.CopyTo 88 //复制某个集合的部分到某个集合里面 89 //格式 90 //ArrayList.CopyTo(Array1); 91 //ArrayList.CopyTo(Array1,5); 92 //ArrayList.CopyTo(0,Array1,0,5); 93 //我们先来用第一种 94 ArrayList c = new ArrayList() { 'a', 'b', 'c' }; 95 ArrayList cc = new ArrayList() { 'D', 'S', 'B' }; 96 char[] ccc = new char[] { '1','2','3' }; 97 98 c.CopyTo(ccc); 99 100 Console.WriteLine("/////////////////////////////////"); 101 for (i = 0; i <= ccc.GetUpperBound(0) ; i++) 102 { 103 Console.WriteLine("{0}", ccc[i]); 104 } 105 //这里从结果可以看出来了 106 //这里有几个小问题 107 /* 108 1.ArrayList.CopyTo(Array1),显然这是ArrayList的方法,但是括号内却不能是ArrayList 109 比如这么写的话c.CopyTo(cc);,CopyTo都不会被识别成一个方法,因为他里面是Array类而不是ArrayList类 110 2.Array类是抽象类,是数组类的父类,而作为子类的数组继承了Array的所有方法,所以不能直接定义Array类 111 比如Array ccc=new Array(){}; 112 Array ccc =new char[] {'a'}; 113 都是错误的 114 3.在做for循环的时候,i的自加判断的时候,用Array.GetUpperBound()方法的时候输出的是最后一个元素的位 115 因为计数是从0开始的,所以会少循环一位,所以一般写作i<Array1=GetUpperBound 116 但是在用ArrayList.Count的时候,这不是一个方法,而是ArrayList的属性,他输出的是ArrayList表示的长度 117 所以不会少循环,一般写作i<ArrayList.Count 118 */ 119 120 //第二种用法 121 c = new ArrayList() { 'a', 'b', 'c' }; 122 cc = new ArrayList() { 'D', 'S', 'B' }; 123 ccc = new char[] { '1', '2', '3' }; 124 125 // cc.CopyTo(ccc, 2); 126 //如果直接这么写,是一定会报错的 127 //格式中ArrayList.CopyTo(Array1,Int32);Int32表示的是从Array1第Int32位的元素开始执行Copy 128 //但是前提条件是Array1的空间足够,空间不足就会报错 129 //所以如果从第一个开始,就不会超过界限 130 131 cc.CopyTo(ccc,0); 132 Console.WriteLine("//////////////////////////////"); 133 for (i = 0; i <= ccc.GetUpperBound(0); i++) 134 { 135 Console.WriteLine("{0}",ccc[i]); 136 } 137 //这样就可以直接输出了 138 //一般来讲都会为后面留出空间 139 //比如说。 140 141 char[] cccc = new char[10]; 142 //cccc = new char[] { ',' }; 143 //这样的操作也是错误的,这样会导致,原先开的10的空间现在变成了1,所以这里要标明维位数来赋值 144 cccc[0] ='S'; 145 cccc[1] = 'B'; 146 cccc[7] = 'D'; 147 cccc[8] = 'X'; 148 149 Console.WriteLine("//////////////////////////////"); 150 for (i = 0; i <= cccc.GetUpperBound(0); i++) 151 { 152 Console.WriteLine("{0}", cccc[i]); 153 } 154 //从这里我们看出来了,输出结果我们没有用位数来赋值的地方,系统默认给了空,空间得以保留 155 //那当我们执行就不会有问题了 156 cc.CopyTo(cccc, 2); 157 Console.WriteLine("//////////////////////////////"); 158 for (i = 0; i <= cccc.GetUpperBound(0); i++) 159 { 160 Console.WriteLine("{0}", cccc[i]); 161 } 162 //而这里的复制粘贴不同于Struck的从前到后直接取代,而是只取代部分的内容。 163 164 //我们再来介绍最后一种方法 165 //ArrayList.CopyTo(Int32_0,Array1,Int32_1,Int32_2); 166 //Int32_0表示的是从源ArrayList中从0开始的索引的位数,说白了就是从第几位开始 167 //Int32_1表示的是从目标Array1中从0开始的索引位数,说白了也是从第几位开始 168 //Int32_2还是一样,表示复制多少位数 169 170 //我们来实际操作一下 171 char[] d = new char[15]; 172 d[0] = 'W'; 173 d[1] = 'S'; 174 d[2] = ''; 175 d[3] = ''; 176 d[7] = 'S'; 177 d[8] = 'B'; 178 179 cc.CopyTo(0, d, 2, 2); 180 Console.WriteLine("//////////////////////////////"); 181 for (i = 0; i <= d.GetUpperBound(0); i++) 182 { 183 Console.WriteLine("{0}", d[i]); 184 } 185 //这里我们设置了cc的起始位数,从第0位开始,也就是从头开始,然后对d设置的位数是从2开始, 186 //而我们只取了cc的两位,所以只复制了两个出来,其他均未改变。 187 188 }
    悟已往之不谏,知来者之可追
  • 相关阅读:
    Visual Studio 2010使用Visual Assist X的方法
    SQL Server 2000 评估版 升级到 SQL Server 2000 零售版
    双网卡多网络单主机同时访问
    开发即过程!立此纪念一个IT新名词的诞生
    delphi dxBarManager1 目录遍历 转为RzCheckTree2树
    5320 软件集合
    delphi tree 从一个表复制到另一个表
    DELPHI 排课系统课表
    长沙金思维 出现在GOOGLE的 金思维 相关搜索里啦!!
    如何在DBGrid的每一行前加一个单选框?
  • 原文地址:https://www.cnblogs.com/ljh-study/p/13657119.html
Copyright © 2011-2022 走看看