一、數(shù)組
在 C# 中,數(shù)組實際上是對象,而不只是像 C 和 C++ 中那樣的可尋址連續(xù)內(nèi)存區(qū)域。
Array 是所有數(shù)組類型的抽象基類型。 可以使用 Array 具有的屬性以及其他類成員。
?Array類提供了許多其他有用的方法和屬性,用于排序、搜索和復(fù)制數(shù)組。
數(shù)組的注意點:
初始化后,數(shù)組的長度不可以再修改了
C#中數(shù)組的長度定義好了,或者通過初始化的元素個數(shù)來確定了數(shù)組的長度,那么該數(shù)組的長度是不可以被修改的。
因此,
1、 C#中,不能隨意改變數(shù)組的長度。
2、 C#中,不能隨意刪除一個數(shù)組的元素。
關(guān)于獲取數(shù)組的維度和數(shù)組長度的方法
- 使用 Length 屬性來獲取數(shù)組的長度。
int [ ] num={1,2,3,4,5};
int LengthOfNum=num.Length;//該數(shù)組長度為5
- 使用 Rank 屬性來顯示數(shù)組的維數(shù)。
static void Main(string[] args)
{
int [,] array=new int[5,10];
Console.WriteLine(array.Rank);//輸出結(jié)果為2,表示該數(shù)組是一個二維數(shù)組
}
-
1、一維數(shù)組
- 聲明
數(shù)據(jù)類型 [ ] 數(shù)組名=new 數(shù)據(jù)類型[數(shù)組里面的元素的個數(shù)]
示例:
int [ ] array1=new int[5];//聲明的是一個由 5 個整數(shù)組成的數(shù)組:
數(shù)據(jù)類型[] 數(shù)組名 = {具體的值};
示例:
int[] array2 ={ 1, 3, 5, 7, 9,11 };
數(shù)據(jù)類型就是要存儲的數(shù)據(jù)是整形int還是字符串string,還是單精度浮點型float或是其他數(shù)據(jù)類型等等。
- 初始化
第一種、聲明數(shù)組長度,但是先不賦值
int[ ] array1 = new int[5];
此數(shù)組包含從 array[0] 到 array[4] 的元素。 new 運(yùn)算符用于創(chuàng)建數(shù)組并將數(shù)組元素初始化為它們的默認(rèn)值。 在此例中,所有數(shù)組元素都初始化為零。第二種、在聲明數(shù)組時將其初始化
int[] array2 = new int[] { 1, 3, 5, 7, 9 };
或者簡寫成
int[] array2 = { 1, 3, 5, 7, 9 };第三種、聲明一個數(shù)組變量但不將其初始化,但在將數(shù)組分配給此變量時必須使用 new 運(yùn)算符。
int[ ] array3;
array3 = new int[] { 1, 3, 5, 7, 9 };
注意點:
SomeType[] array4 = new SomeType[10];
該語句的結(jié)果取決于 SomeType 是值類型還是引用類型。如果是值類型,則該語句將創(chuàng)建一個由 10 個 SomeType 類型的實例組成的數(shù)組。如果 SomeType 是引用類型,則該語句將創(chuàng)建一個由 10 個元素組成的數(shù)組,其中每個元素都初始化為空引用。
- 數(shù)組的遍歷
static void Main(string[] args)
{
int[] number = { 1, 2, 3, 4, 5, 6 };
//用foreach遍歷數(shù)組中的元素
foreach (int num in number)
{
Console.WriteLine(num);
}
//用for遍歷數(shù)組中的元素
for (int i = 0; i < number2.Length ; i++)
{
Console.WriteLine(number2[i]);
}
Console.ReadKey();
}
-
2、二維數(shù)組
聲明
數(shù)據(jù)類型[,] 二維數(shù)組名 = new 數(shù)據(jù)類型[當(dāng)前數(shù)據(jù)類型的元素,數(shù)據(jù)類型元素中的元素]
數(shù)據(jù)類型[,] 二維數(shù)組名 = {{具體的值},{具體的值(與前面的元素內(nèi)部個數(shù)保持一致)}};
int[,] array = new int[4, 2];//聲明創(chuàng)建一個四行兩列的二維數(shù)組-
初始化
第一種:聲明數(shù)組長度,但是先不賦值
int[,] array1 = new int[4, 2];第二種:不設(shè)置級別說明符(數(shù)組長度),直接賦初始值。
int[,] array2 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
或者簡寫成
int[,] array2 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };第三種:既設(shè)置長度也賦初始值
int[,] array3 = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
聲明一個數(shù)組變量但不將其初始化,必須使用 new 運(yùn)算符將一個數(shù)組分配給此變量。
int[,] array4;
array4 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
- 數(shù)組的遍歷
int[,] num = { { 1, 2, 3 }, { 4, 5, 6 } };
foreach (var item in num)
{
Console.WriteLine(item);
}
//for語句遍歷數(shù)組中的元素
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
Console.WriteLine(num[i,j]);
}
}
-
3、多維數(shù)組
多維數(shù)組的聲明和初始化跟二維數(shù)據(jù)的方法一樣,下面以三維數(shù)組來舉例。
聲明
數(shù)據(jù)類型[,,] 數(shù)組名 = new 數(shù)組類型[當(dāng)前數(shù)組名中的元素,數(shù)組元素中的元素,數(shù)組元素中元素的個數(shù)];
數(shù)據(jù)類型[,,] 數(shù)據(jù)名 = {{{1,2,3},{3,4,5} },{{具體的值},{具體的值}},{{具體的值},{具體的值}}}
int[, ,] array = new int[4, 2, 3];-
初始化
第一種:聲明數(shù)組長度,但是先不賦值
int[,,] array1 = new int[2,2,3];第二種:不設(shè)置級別說明符(數(shù)組長度),直接賦初始值。
int[,,] array2 = new int[,,]{{{ 1, 2 ,3}, { 4 ,5,6}},{{ 7,8,9 }, { 10,11,12 }}};
或者簡寫成
int[,,] array2 ={ {{ 1, 2 ,3}, { 4 ,5,6}}, {{ 7,8,9 }, { 10,11,12 }}};第三種:既設(shè)置長度也賦初始值
int[,] array3 = new int[2,2,3] { {{ 1, 2 ,3}, { 4 ,5,6}}, {{ 7,8,9 }, { 10,11,12 }}};
聲明一個數(shù)組變量但不將其初始化,必須使用 new 運(yùn)算符將一個數(shù)組分配給此變量。
int[,,] array4;
array4 = new int new int[2,2,3] { {{ 1, 2 ,3}, { 4 ,5,6}}, {{ 7,8,9 }, { 10,11,12 }}};
- 數(shù)組的遍歷
int[,,] array ={
{ { 1, 2 },
{ 3, 4 }
},
{ { 5, 6 },
{ 7, 8 }
}
};
//用foreach遍歷數(shù)組中的元素
foreach (var item in array)
{
Console.WriteLine(item);
}
//for語句遍歷數(shù)組中的元素
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
for (int g = 0; g < 2; g++)
{
Console.WriteLine(array[i,j,g]);
}
}
}
-
4、交錯數(shù)組
聲明
數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組元素的值][];
int[][] Array = new int[3][ ];//聲明一個由三個元素組成的一維數(shù)組,其中每個元素都是一個一維整數(shù)數(shù)組。-
初始化
第一種:聲明數(shù)組長度,但是先不賦值
必須初始化Array 的元素后才可以使用它
Array1[0] = new int[5];
Array1[1] = new int[4];
Array1[2] = new int[2];
每個元素都是一個一維整數(shù)數(shù)組。第一個元素是由 5 個整數(shù)組成的數(shù)組,第二個是由 4 個整數(shù)組成的數(shù)組,而第三個是由 2 個整數(shù)組成的數(shù)組。這里需要注意,交錯數(shù)組中每個一維數(shù)組里的存儲個數(shù)可以不一樣,沒強(qiáng)制要求。第二種、也可以使用初始值設(shè)定項用值填充數(shù)組元素,在這種情況下不需要數(shù)組大小。
Array2[0] = new int[] { 1, 3, 5, 7, 9 };
Array2[1] = new int[] { 0, 2, 4, 6 };
Array2[2] = new int[] { 11, 22 };第三種、還可以在聲明數(shù)組時將其初始化
int[][] Array3 = new int[][]
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
或者簡寫成
int[][] Array3 =
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
備注:可以混合使用交錯數(shù)組和多維數(shù)組。
二、字符串
在 C# 中,string 關(guān)鍵字是 String 的別名。因此,String 與 string 等效,您可以根據(jù)自己的喜好選擇命名約定。String 類提供了很多用于安全地創(chuàng)建、操作和比較字符串的方法。此外,C# 語言還重載某些運(yùn)算符來簡化常見的字符串操作。
- 聲明
//未初始化聲明
string strs1;
//初始化為空
string strs2=null;
//作為空字符串初始化 ,使用空常量而不是文字
string strs3 = System.String.Empty;
//使用常量字符串
string strs4 = "hihao";
//用正則字符串文本初始化
string strs5 = "c:\Program Files\Microsoft Visual Studio 8.0";
//用逐字字符串文字初始化
string strs6 = @"c:\Program Files\Microsoft Visual Studio 9.0";

- 字符串的基本使用
string strs1="我是中國人!我自豪驕傲!";
string strs2="選擇雷潮教育";
string strs3="學(xué)習(xí)IT技術(shù)";
string strs4="成就萬元月薪夢";
string strs5 = " WOJIUSHIWO";
//獲取長度
Console.WriteLine(strs1.Length ); //結(jié)果 12
//判斷兩個字符串是否相同
Console.WriteLine(strs1 == strs2);//結(jié)果 False
//字符串的拼接
string str1 = strs2 + strs3 + strs4;//結(jié)果 選擇雷潮教育學(xué)習(xí)IT技術(shù)成就萬元月薪夢
Console.WriteLine(str1);
//獲取字符串某個字符
Console.WriteLine("strs1字符串中第6個字符是:"+strs1[5]);//結(jié)果 strs1字符串中第6個字符是:!
//遍歷字符串
foreach (var str in strs1)
{
Console.WriteLine(str);
}
//結(jié)果
我
是
中
國
人
!
我
自
豪
驕
傲
!
//Replace()用一個字符或者字符串替換字符串中給定的字符或字符串。
string str2 = strs1.Replace('!', ',');//結(jié)果 我是中國人,我自豪驕傲,
Console.WriteLine(str2);
//Split() 在出現(xiàn)給定字符的地方,把字符串分割成一個字符串?dāng)?shù)組。
char[] cha1 = { '!' };
string [] str3 =strs1.Split(cha1);
foreach (var item in str3)
{
Console.WriteLine(item);
}
//結(jié)果
我是中國人
我自豪驕傲
#region 字符串基本使用
//SubString() 在字符串中檢索給定位置的子字符串
string str4 = strs2.Substring(2);//結(jié)果 雷潮教育
Console.WriteLine(str4);
//ToLower() 把字符串轉(zhuǎn)換成小寫形式
string str5 = strs5.ToLower();//結(jié)果 wojiushiwo
Console.WriteLine(str5);
//ToUpper() 把字符串轉(zhuǎn)換成大寫形式
string str6 = str5.ToUpper();//結(jié)果 WOJIUSHIWO
Console.WriteLine(str6);
//Trim() 刪除首位的空白
string str7 = strs5.Trim();//結(jié)果 WOJIUSHIWO
Console.WriteLine(str7);
//Concat()方法,合并字符串
string str8 = string.Concat(strs2,strs3,strs4);//結(jié)果 選擇雷潮教育學(xué)習(xí)IT技術(shù)成就萬元月薪夢
Console.WriteLine(str8);
//CopyTo()方法,把字符串中指定的字符復(fù)制到一個數(shù)組中
string str9 = string.Copy(strs4);//結(jié)果 成就萬元月薪夢
Console.WriteLine(str9);
//Format()方法,格式化字符串
string str10 = string.Format(str7);//結(jié)果 WOJIUSHIWO
Console.WriteLine(str10);
//IndexOf()方法,取得字符串第一次出現(xiàn)某個給定字符串或者字符的位置。
int a = strs5.IndexOf('I');//結(jié)果 4
Console.WriteLine(a);
//IndexOfAny() 字符數(shù)組中的任意字符在此實例中第一個匹配項的從零開始的索引。
char[] cha2 = {'J', '0' };
int b = strs5.IndexOfAny(cha2);//結(jié)果 3
Console.WriteLine(b);
//Insert(),把一個字符串實例插入到另一個字符串實例的指定索引處。
string str11 = strs1.Insert(1,strs5);//結(jié)果 我 WOJIUSHIWO是中國人!我自豪驕傲!
Console.WriteLine(str11);
//Join() 合并字符串?dāng)?shù)組,創(chuàng)建一個新的字符串
string str12 = string.Join(strs2, strs3);//結(jié)果 學(xué)習(xí)IT技術(shù)
Console.WriteLine(str12);
Console.WriteLine("strs2字符串中第2個和第3個字符是:"+strs2[2]+strs2[3]);//結(jié)果 strs2字符串中第2個和第3個字符是:雷潮
Console.WriteLine("strs3字符串中第2個和第3個字符是:"+strs3[2]+strs3[3]);//結(jié)果 strs3字符串中第2個和第3個字符是:IT