C#中更改1維數組的大小

來源:互聯網
上載者:User

類比Visual Basic的ReDim語句,C#實現,僅支援1維數組。若不需要檢查參數的合法性,則只要最後4行程式就可以了。請大家討論一下,當傳入的數組不是1維時,是拋出RankException異常,還是拋出ArgumentException異常(可以指明參數名)為好。

 1using System;
 2
 3static Array ReDim(Array array, int newLength)
 4{
 5  if (array == null)
 6  {
 7    throw new ArgumentNullException("array");
 8  }
 9  if (array.Rank != 1)
10  {
11    //  throw new RankException("要求1維數組。");
12    throw new ArgumentException("要求1維數組。", "array");
13  }
14  if (newLength < 0)
15  {
16    throw new ArgumentOutOfRangeException("newLength", "要求非負數字。");
17  }
18  if (newLength == array.Length) return array;
19
20  Type type = array.GetType().GetElementType();
21  Array newArray = Array.CreateInstance(type, newLength);
22  Array.Copy(array, 0, newArray, 0, Math.Min(array.Length, newLength));
23  return newArray;
24}

看看以下3個建構函式也很有意思。不知是不是M$的疏忽,如此相似的3個異常,其建構函式的參數順序竟不一致,實在讓人無所適從。

1public ArgumentException          (string message,   string paramName);
2public ArgumentNullException      (string paramName, string message  );
3public ArgumentOutOfRangeException(string paramName, string message  );

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.