四、復(fù)雜數(shù)據(jù)類型

一、數(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";

轉(zhuǎn)義字符串
  • 字符串的基本使用
          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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,511評論 19 139
  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對于byte類型而言...
    龍貓小爺閱讀 4,436評論 0 16
  • 1 數(shù)組No11 數(shù)組:存放一組相同類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu) 數(shù)組本身是引用數(shù)據(jù)類型,數(shù)組中的元素可以是基本數(shù)據(jù)類型...
    征程_Journey閱讀 733評論 0 1
  • 一、框架 1、Mac系統(tǒng)及常用工具、進(jìn)制;C數(shù)據(jù)類型、常量變量、運(yùn)算符、表達(dá)式、格式化輸入輸出 2、關(guān)系運(yùn)算符、邏...
    師景福閱讀 834評論 0 2
  • 1.前言 最近有很多朋友問我有沒有相關(guān)的書籍推薦,希望能夠自學(xué)一下前端。 正好最近在查閱文章的時候,發(fā)現(xiàn)有朋友已經(jīng)...
    小裁縫sun閱讀 2,470評論 5 76

友情鏈接更多精彩內(nèi)容