Mediante el uso de un literal de matriz, puede crear una matriz que contiene un conjunto inicial de valores. Un literal de matriz consta de una lista de valores separados por comas entre llaves (
{}
).
Cuando se crea una matriz mediante un literal de matriz, puede proporcionar el tipo de matriz o usar la inferencia de tipo para determinar el tipo de matriz. El código siguiente muestra ambas opciones.
Dim numbers = New Integer() {1, 2, 4, 8} Dim doubles = {1.5, 2, 9.9, 18}
Cuando se usa la inferencia de tipos, el tipo de la matriz se determina por el tipo dominante en la lista de valores que se proporciona para el literal de matriz. El tipo dominante es un tipo único al que todos los demás tipos del literal de la matriz se pueden ampliar. Si no se puede determinar este tipo único, el tipo dominante es el tipo único al que todos los demás tipos de la matriz se pueden restringir. Si no se puede determinar ninguno de estos tipos únicos, el tipo dominante es
Object
. Por ejemplo, si la lista de valores que se proporciona al literal de matriz contiene valores de tipo Integer
, Long
y Double
, la matriz resultante es de tipo Double
. Tanto Integer
como Long
se amplían solo a Double
. Por lo tanto, Double
es el tipo dominante. Para obtener más información, consulta Conversiones de ampliación y de restricción. Estas reglas de inferencia se aplican a tipos que se deducen para matrices que son variables locales definidas en un miembro de clase. Aunque puede usar literales de matriz al crear variables de nivel de clase, no se puede usar la inferencia de tipos en el nivel de clase. Como resultado, los literales de matriz que se especifican en el nivel de clase deducen los valores proporcionados para el literal de matriz como tipo Object
.
Puede especificar de manera explícita el tipo de los elementos de una matriz que se crea usando un literal de matriz. En este caso, los valores del literal de matriz se deben ampliar al tipo de los elementos de la matriz. En el ejemplo de código siguiente se crea una matriz de tipo
Double
desde una lista de enteros.Dim values As Double() = {1, 2, 3, 4, 5, 6}
Literales de matriz anidados
Es posible crear una matriz multidimensional usando literales de matriz anidados. Los literales de matriz anidados deben tener una dimensión y un número de dimensiones o rango que sea coherente con la matriz resultante. En el ejemplo de código siguiente se crea una matriz bidimensional de enteros usando un literal de matriz.
Dim grid = {{1, 2}, {3, 4}}
En el ejemplo anterior, se produciría un error si el número de elementos en los literales de matriz anidados no coincidiese. También se producirá un error si se declarara de manera explícita que la variable de matriz no es bidimensional.
![]() |
---|
Para evitar que se produzca un error al proporcionar literales de matriz anidados de distintas dimensiones, incluya los literales de matriz internos entre paréntesis. Los paréntesis fuerzan la evaluación de la expresión de literal de matriz y los valores resultantes se usan con el literal de matriz externo, tal como muestra el código siguiente.
|
Dim values = {({1, 2}), ({3, 4, 5})}
Es posible usar la inferencia de tipos al crear una matriz multidimensional con literales de matriz anidados. Cuando se usa la inferencia de tipos, el tipo inferido es el tipo dominante para todos los valores de todos los literales de matriz de un nivel de anidamiento. En el ejemplo de código siguiente se crea una matriz bidimensional del tipo
Double
a partir de valores del tipo Integer
y Double
. Dim a = {{1, 2.0}, {3, 4}, {5, 6}, {7, 8}}
No hay comentarios:
Publicar un comentario