如何使用 Visual Basic 2005 或 Visual Basic.NET,從 ToArray(type) 方法傳回強型別陣列

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:312389
本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將告訴您,如何使用 Microsoft Visual Basic 2005 或 Microsoft Visual Basic.NET 從 ToArray(type) 方法傳回強型別陣列。如果您設定 選項 Strict On,本文會套用到 Visual Basic 2005 或 Visual Basic.NET。如果您將設定 選項 Strict Off Visual Basic 會允許隱含在本文所述的轉型。

陣列清單 類別的無參數 ToArray 方法傳回的型別 Object 陣列。您不能使用 ToArray 的無參數實作轉換到您的型別陣列的 物件 陣列。比方說如果 客戶 物件數目加入 陣列清單 基礎清單不會進行 客戶 陣列。這會導致下列的陳述式失敗 System.InvalidCastException 例外狀況。
Dim custArray() As customer = CType(myArrayList.ToArray(), customer())				
要傳回強型別陣列,使用多載的 ToArray 方法接受 (Accept) 做為參數的物件型別。比方說下列陳述式會成功。
Dim custArray() As customer = CType(al.ToArray(GetType(customer)), customer())				
重要陣列清單 的所有項目必須是相同的物件型別。如果您嘗試轉換成特定類型的異質性物件的 陣列清單ToArray 方法將會失敗。

逐步範例

  1. 新的主控台應用程式專案請先使用 Visual Basic 2005 或 Visual Basic.NET。預設情況下,會建立名為 Module1.vb 的檔案。
  2. 在 [Module1.vb 程式碼取代下列程式碼
    Option Strict OnModule Module1    Sub Main()        Dim tempCust As customer        Dim c As New customer()        c.cname = "anonymous"        Dim al As New ArrayList()        al.Add(c)        Dim cArray As Object() = al.ToArray()        'Display the type of the ArrayList.        Console.WriteLine(cArray.GetType)        'Uncomment the next line to reproduce the InvalidCastException.        'Dim custArray() As customer = CType(al.ToArray(), customer())        'Comment the next line to reproduce the InvalidCastException.        Dim custArray() As customer = CType(al.ToArray(GetType(customer)), customer())        Console.WriteLine(custArray.GetType)    End Sub    Public Class customer        Public cname As String    End ClassEnd Module					
  3. 按下 CTRL + F5 以建置並執行專案。(CTRL + F5 可以讓 [主控台] 視窗保持開啟)。
  4. 如果要重現 InvalidCastException 例外狀況,遵循範例程式碼兩個的註解指示進行。

警告:本文為自動翻譯

內容

文章識別碼:312389 - 最後檢閱時間:02/24/2014 03:31:49 - 修訂: 3.3

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB312389 KbMtzh
意見反應