C#基於數組實現泛型順序表

來源:互聯網
上載者:User

標籤:

前方預警,不敢保證代碼品質。

 

錯誤碼樣本:

 1         /// <summary> 2         /// 尋找順序表第i個位置的元素 3         /// 在顯示情況中,我們更常用下標 4         /// </summary> 5         /// <param name="i"></param> 6         /// <returns></returns> 7         public T GetElemByIndex(int i) 8         { 9             //T temp = ;10             if (data.Length == 0)11             {12                 //throw new IndexOutOfRangeException("索引超出順序表範圍");13                 throw new NullReferenceException("順序表為空白");14             }15             else if (i < 1 || i > Length + 1)16             {17                 throw new IndexOutOfRangeException("索引超出順序表範圍");18             }19             else20             {21                 return data[i-1];22             }23         }
尋找制定位置的元素

 注意在代碼中,傳回值沒有按照資料結構課本的方式,返回Status,因為使用者調用方法,就是要擷取傳回值的,用ref的方式反而不好使用,感覺怪怪的。

 另外,在非法調用時,也不是通過cw的方式提醒使用者出錯,而是採用直接拋出異常的方式,數組是否越界這些判斷理應放權給使用者。

 還有,從代表中,我們發現,不傳回值,而是拋出異常,編譯任然會通過。

正確程式碼範例:

if (Length == 0){      throw new NullReferenceException("順序表為空白");}    

判斷順序表是否為空白時,不能用data.Length屬性,因為該屬性值不是順序表的大小,而是數組的大小,永遠為MaxSize;而Length表示線性表的長度;

 

C#基於數組實現泛型順序表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.