Как вернуть строго типизированный массив из метода ToArray(type) с помощью Visual Basic 2005 или Visual Basic .NET

Переводы статьи Переводы статьи
Код статьи: 312389 - Vizualiza?i produsele pentru care se aplic? acest articol.
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Развернуть все | Свернуть все

В этой статье

Аннотация

В данной статье описывается использование Microsoft Visual Basic 2005 или Microsoft Visual Basic .NET для возвращения строго типизированный массив изToArray(type)метод. В данной статье относится к Visual Basic 2005 или Visual Basic .NET, еслиOption Strict On. При установкеOption Strict OffVisual Basic обеспечивает неявное преобразование, описанное в статье.

Без параметровToArrayметодArrayListкласс возвращает массив объектов типаОбъект. Нельзя использовать без параметров реализацииToArrayдля приведенияОбъектмассив в массив этого типа. Например, если добавить несколькоКлиентобъектыArrayList, базовый список не производится.Клиентмассив. В этом случае сбой с исключением System.InvalidCastException следующую инструкцию.
Dim custArray() As customer = CType(myArrayList.ToArray(), customer())
				
Чтобы вернуть строго типизированный массив, используйте перегруженныйToArrayметод, который принимает тип объекта как параметр. Например следующая инструкция выполняется успешно.
Dim custArray() As customer = CType(al.ToArray(GetType(customer)), customer())
				
Существенный:Все элементыArrayListдолжен быть того же типа объекта. надписьюToArrayПри попытке приведения, происходит сбой методаArrayListгетерогенные объектов определенного типа.

Пошаговый пример

  1. Запустите новый проект консольного приложения с помощью Visual Basic 2005 или Visual Basic .NET. По умолчанию создается файл с именем Module1.vb.
  2. Замените код в модуль Module1.vb следующим кодом.
    Option Strict On
    
    Module 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 Class
    
    End Module
    					
  3. Нажмите клавиши CTRL + F5 для построения и запуска проекта. (CTRL + F5 позволяет в окне консоли, остаются открытыми.)
  4. Воспроизвести исключение InvalidCastException, следуйте инструкциям двух комментариев в коде.

Свойства

Код статьи: 312389 - Последний отзыв: 21 февраля 2014 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Ключевые слова: 
kbnosurvey kbarchive kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB312389 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:312389

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com