Cómo devolver una matriz con establecimiento inflexible de tipos desde el método ToArray(type) mediante Visual Basic 2005 o Visual Basic .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 312389 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo describe cómo utilizar Microsoft Visual Basic 2005 o Microsoft Visual Basic .NET para devolver una matriz con establecimiento inflexible de tipos desde el método ToArray(type) . En este artículo se aplica a Visual Basic 2005 o Visual Basic .NET si establece Option Strict On . Si establece Option Strict Off , Visual Basic permite la conversión implícita descrita en el artículo.

El método de parámetro menos ToArray de la clase ArrayList devuelve una matriz de tipo Object . No puede utilizar la implementación de menos de parámetro de ToArray para convertir la matriz de objetos en una matriz del tipo de. Por ejemplo, si agrega un número de objetos Customer con ArrayList , la lista subyacente no se realiza una matriz de cliente . Esto hace que la siguiente instrucción de un error con la excepción System.InvalidCastException.
Dim custArray() As customer = CType(myArrayList.ToArray(), customer())
				
para devolver una matriz con establecimiento inflexible de tipos, utilice el método ToArray sobrecargado que acepta un tipo de objeto como parámetro. Por ejemplo, se realiza correctamente la instrucción siguiente.
Dim custArray() As customer = CType(al.ToArray(GetType(customer)), customer())
				
importante todos los elementos de ArrayList deben ser del mismo tipo de objeto. El método ToArray fallará si se intenta convertir una ArrayList de objetos heterogéneos para un tipo específico.

Ejemplo paso a paso

  1. Inicie un nuevo proyecto de aplicación de consola mediante Visual Basic 2005 o Visual Basic.NET. De forma predeterminada, se crea un archivo que se denomina Module1.vb.
  2. Reemplace el código de Module1.vb con el código siguiente.
    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. Presione CTRL + F5 para generar y, a continuación, ejecute el proyecto. (CTRL + F5 permite la ventana consola permanezca abierta).
  4. Para reproducir la excepción InvalidCastException, siga las dos instrucciones de comentarios en el código de ejemplo.

Propiedades

Id. de artículo: 312389 - Última revisión: lunes, 24 de febrero de 2014 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB312389 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 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