una sirve que programacion para multidimensionales matriz matrices llenar example ejemplos c# arrays syntax array-initialization

sirve - matrices multidimensionales c#



Todas las sintaxis de inicialización de matriz posibles (13)

¿Cuáles son todas las sintaxis de inicialización de matrices que son posibles con C #?


Arreglos no vacíos

  • var data0 = new int[3]

  • var data1 = new int[3] { 1, 2, 3 }

  • var data2 = new int[] { 1, 2, 3 }

  • var data3 = new[] { 1, 2, 3 }

  • var data4 = { 1, 2, 3 } no es compilable. Use int[] data5 = { 1, 2, 3 } lugar.

Arreglos vacíos

  • var data6 = new int[0]
  • var data7 = new int[] { }
  • var data8 = new [] { } y int[] data9 = new [] { } no son compilables.

  • var data10 = { } no es compilable. Use int[] data11 = { } lugar.

Como argumento de un método.

Solo las expresiones que pueden asignarse con la palabra clave var pueden pasarse como argumentos.

  • Foo(new int[2])
  • Foo(new int[2] { 1, 2 })
  • Foo(new int[] { 1, 2 })
  • Foo(new[] { 1, 2 })
  • Foo({ 1, 2 }) no es compilable
  • Foo(new int[0])
  • Foo(new int[] { })
  • Foo({}) no es compilable

Ejemplo para crear una matriz de una clase personalizada

A continuación se muestra la definición de la clase.

public class DummyUser { public string email { get; set; } public string language { get; set; } }

Así es como puedes inicializar la matriz:

private DummyUser[] arrDummyUser = new DummyUser[] { new DummyUser{ email = "[email protected]", language = "English" }, new DummyUser{ email = "[email protected]", language = "Spanish" } };


En caso de que desee inicializar una matriz fija de elementos preinicializados iguales (no null o que no sean los default ), use esto:

var array = Enumerable.Repeat(string.Empty, 37).ToArray();

También por favor participe en this discusión.


Estos son los métodos actuales de declaración e inicialización para una matriz simple.

string[] array = new string[2]; // creates array of length 2, default values string[] array = new string[] { "A", "B" }; // creates populated array of length 2 string[] array = { "A" , "B" }; // creates populated array of length 2 string[] array = new[] { "A", "B" }; // created populated array of length 2

Tenga en cuenta que existen otras técnicas para obtener matrices, como las ToArray() Linq ToArray() en IEnumerable<T> .

También tenga en cuenta que en las declaraciones anteriores, los dos primeros podrían reemplazar la string[] de la izquierda con var (C # 3+), ya que la información de la derecha es suficiente para inferir el tipo adecuado. La tercera línea debe escribirse como se muestra, ya que la sintaxis de inicialización de la matriz por sí sola no es suficiente para satisfacer las demandas del compilador. El cuarto también podría usar la inferencia. Entonces, si te gusta la brevedad, lo anterior podría escribirse como

var array = new string[2]; // creates array of length 2, default values var array = new string[] { "A", "B" }; // creates populated array of length 2 string[] array = { "A" , "B" }; // creates populated array of length 2 var array = new[] { "A", "B" }; // created populated array of length 2


Las sintaxis de creación de matrices en C # que son expresiones son:

new int[3] new int[3] { 10, 20, 30 } new int[] { 10, 20, 30 } new[] { 10, 20, 30 }

En el primero, el tamaño puede ser cualquier valor integral no negativo y los elementos de la matriz se inicializan a los valores predeterminados.

En el segundo, el tamaño debe ser una constante y el número de elementos dados debe coincidir. Debe haber una conversión implícita de los elementos dados al tipo de elemento de matriz dado.

En el tercero, los elementos deben ser convertibles implícitamente al tipo de elemento, y el tamaño se determina a partir del número de elementos dados.

En la cuarta, el tipo del elemento de la matriz se deduce calculando el mejor tipo, si existe, de todos los elementos dados que tienen tipos. Todos los elementos deben ser convertibles implícitamente a ese tipo. El tamaño se determina a partir del número de elementos dados. Esta sintaxis fue introducida en C # 3.0.

También hay una sintaxis que solo se puede utilizar en una declaración:

int[] x = { 10, 20, 30 };

Los elementos deben ser convertibles implícitamente al tipo de elemento. El tamaño se determina a partir del número de elementos dados.

no hay una guía todo en uno

Lo remito a la especificación C # 4.0, sección 7.6.10.4 "Expresiones de creación de matrices".


Otra forma de crear e inicializar una matriz de objetos. Esto es similar al ejemplo que @Amol ha publicado anteriormente , excepto que este utiliza constructores. Una pincelada de polimorfismo esparcida, no pude resistirme.

IUser[] userArray = new IUser[] { new DummyUser("[email protected]", "Gibberish"), new SmartyUser("[email protected]", "Italian", "Engineer") };

Clases por contexto:

interface IUser { string EMail { get; } // immutable, so get only an no set string Language { get; } } public class DummyUser : IUser { public DummyUser(string email, string language) { m_email = email; m_language = language; } private string m_email; public string EMail { get { return m_email; } } private string m_language; public string Language { get { return m_language; } } } public class SmartyUser : IUser { public SmartyUser(string email, string language, string occupation) { m_email = email; m_language = language; m_occupation = occupation; } private string m_email; public string EMail { get { return m_email; } } private string m_language; public string Language { get { return m_language; } } private string m_occupation; }


Repita sin LINQ :

float[] floats = System.Array.ConvertAll(new float[16], v => 1.0f);


Solución trivial con expresiones. Tenga en cuenta que con NewArrayInit puede crear una matriz unidimensional.

NewArrayExpression expr = Expression.NewArrayInit(typeof(int), new[] { Expression.Constant(2), Expression.Constant(3) }); int[] array = Expression.Lambda<Func<int[]>>(expr).Compile()(); // compile and call callback


También puede crear matrices dinámicas, es decir, primero puede pedirle al usuario el tamaño de la matriz antes de crearla.

Console.Write("Enter size of array"); int n = Convert.ToInt16(Console.ReadLine()); int[] dynamicSizedArray= new int[n]; // Here we have created an array of size n Console.WriteLine("Input Elements"); for(int i=0;i<n;i++) { dynamicSizedArray[i] = Convert.ToInt32(Console.ReadLine()); } Console.WriteLine("Elements of array are :"); foreach (int i in dynamicSizedArray) { Console.WriteLine(i); } Console.ReadKey();


Enumerable.Repeat(String.Empty, count).ToArray()

Creará matriz de cadenas vacías repetidas veces ''contar''. En caso de que desee inicializar la matriz con el mismo valor de elemento predeterminado especial. Con cuidado con los tipos de referencia, todos los elementos referirán el mismo objeto.


For Class initialization: var page1 = new Class1(); var page2 = new Class2(); var pages = new UIViewController[] { page1, page2 };


int[] array = new int[4]; array[0] = 10; array[1] = 20; array[2] = 30;

o

string[] week = new string[] {"Sunday","Monday","Tuesday"};

o

string[] array = { "Sunday" , "Monday" };

y en matriz multidimensional

Dim i, j As Integer Dim strArr(1, 2) As String strArr(0, 0) = "First (0,0)" strArr(0, 1) = "Second (0,1)" strArr(1, 0) = "Third (1,0)" strArr(1, 1) = "Fourth (1,1)"


var contacts = new[] { new { Name = " Eugene Zabokritski", PhoneNumbers = new[] { "206-555-0108", "425-555-0001" } }, new { Name = " Hanying Feng", PhoneNumbers = new[] { "650-555-0199" } } };