Array 成员
提供一些方法,用于创建、处理、搜索数组并对数组进行排序,从而充当公共语言运行时中所有数组的基类。
代码
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Collections;
6 using System.Xml.Linq;
7
8 namespace element
9 {
10 class Program
11 {
12 static void Main(string[] args)
13 {
14 //1,直接创建数组
15 int[] myIntArray = new int[5] { 1, 2, 8, 6, 5 };
16 Object[] myObjArray = new Object[5] { 26, 27, 28, 29, 30 };
17
18 Array.Copy(myIntArray, myObjArray, 2); //Array 操作数组拷贝反转排序清零数组
19 //Array.Reverse(myIntArray);
20 //Array.Clear(myIntArray, 0, 4);
21 //Array.Sort(myIntArray);
22
23 //2.1,可以直接输出数组
24 for (int i = 0; i < 5; i++)
25 {
26 Console.WriteLine(myIntArray[i]);
27 Console.WriteLine(myObjArray[i]);
28 }
29 //2.2也可以通过Array输出
30 Array myArr = Array.CreateInstance(typeof(int), 5);
31 Array.Copy(myIntArray, myArr, 5);
32 for (int i = 0; i < 5; i++)
33 {
34 myArr.GetValue(i);
35 }
36 //2.3也可以通过IEnumerator
37 System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();//返回IEnumerator,所以IEnumerable ia = myArr.GetEnumerator();错误
38
39 while (myEnumerator.MoveNext())
40 {
41 Console.WriteLine(myEnumerator.Current);
42 }
43
44
45 //3,由Array初始化数组
46 //Creates and initializes a new three-dimensional Array of type Int32.
47 Array myArr2 = Array.CreateInstance(typeof(Int32), 2, 3, 4);
48 for (int i = myArr2.GetLowerBound(0); i <= myArr2.GetUpperBound(0); i++)
49 for (int j = myArr2.GetLowerBound(1); j <= myArr2.GetUpperBound(1); j++)
50 for (int k = myArr2.GetLowerBound(2); k <= myArr2.GetUpperBound(2); k++)
51 {
52 myArr2.SetValue((i * 100) + (j * 10) + k, i, j, k);
53 }
54
55
56 Array myArray = Array.CreateInstance(typeof(String), 9);
57 myArray.SetValue("The", 0);
58 myArray.SetValue("quick", 1);
59 myArray.SetValue("brown", 2);
60 myArray.SetValue("fox", 3);
61 myArray.SetValue("jumps", 4);
62 myArray.SetValue("over", 5);
63 myArray.SetValue("the", 6);
64 myArray.SetValue("lazy", 7);
65 myArray.SetValue("dog", 8);
66
67
68 //4, ArrayList 也可由IEnumerator 遍历
69 ArrayList MyList = new ArrayList();
70 for (int i = 0; i < 5; i++)
71 {
72 MyList.Add(myArr.GetValue(i));
73 }
74 MyList.Add("nihao");
75 IEnumerator et = MyList.GetEnumerator();
76
77 while(et.MoveNext())
78 {
79 Console.Write("this is");
80 Console.WriteLine(et.Current);
81 }
82
83
84 Console.Read();
85
86 }
87 }
88 }
89
String 类String 类提供的成员执行以下操作:比较 String 对象;返回 String 对象内字符或字符串的索引;复制 String 对象的值;分隔字符串或组合字符串;修改字符串的值;将数字、日期和时间或枚举值的格式设置为字符串;对字符串进行规范化。
使用 Compare、CompareOrdinal、CompareTo、Equals、EndsWith 和 StartsWith 方法进行比较。
使用 IndexOf、IndexOfAny、LastIndexOf 和 LastIndexOfAny 方法可获取字符串中子字符串或 Unicode 字符的索引。
使用 Copy 和 CopyTo 可将字符串或子字符串复制到另一个字符串或 Char 类型的数组。
使用 Substring 和 Split 方法可通过原始字符串的组成部分创建一个或多个新字符串;使用 Concat 和 Join 方法可通过一个或多个子字符串创建新字符串。
使用 Insert、Replace、Remove、PadLeft、PadRight、Trim、TrimEnd 和 TrimStart 可修改字符串的全部或部分。
使用 ToLower、ToLowerInvariant、ToUpper 和 ToUpperInvariant 方法可更改字符串中 Unicode 字符的大小写。
使用 Format, 可将字符串中的一个或多个格式项占位符替换为一个或多个数字、日期和时间或枚举值的文本表示形式。
使用 Length 属性可获取字符串中 Char 对象的数量;使用 Chars 属性可访问字符串中实际的 Char 对象。
使用 IsNormalized 方法可测试某个字符串是否已规范化为特定的范式。使用 Normalize 方法可创建规范化为特定范式的字符串。
StringBuilder 类,表示可变字符字符串
String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
exp:
string a="aa"+"bb";
stringbuilder sb=new stringbuilder();
sb.append("aa");
sb.append("bb");
这两种在内存操作是不同的,第一种内存中有三个string(分别为"aa","bb","aabb") ,第二种只有一个("aabb"),所以性能是不同的

浙公网安备 33010602011771号