2009-12-21 15 views
6

Quiero crear una matriz de dos dimensiones de diferente tipo, como puedo agregar a esa matriz dos valores, uno de ellos es el nombre de control y el segundo es el valor booleano.Definición de matriz dinámica bidimensional con diferentes tipos

+0

No estoy seguro de entender su pregunta, pero no lo hará una obra Diccionario para lo que tratamos de hacer ? ¿Estás tratando de almacenar pares clave/valor? –

+0

sí .............. – Harikrishna

Respuesta

9

No puede hacer eso. En su lugar, se debe crear una clase que contiene estas dos propiedades, a continuación, puede crear una matriz de este tipo:

public class MyClass 
{ 
    public string ControlName {get;set;} 
    public bool MyBooleanValue {get;set;} 
} 

public MyClass[] myValues=new MyClass[numberOfItems]; 

O, como dice Anders, usar un diccionario si una de las propiedades está destinado a ser utilizado para realizar búsquedas.

4

No se puede con eso con una matriz.

¿Quizás deberías estar usando un Dictionary?

Un diccionario genérico de Dictionary<string,bool> parece ser el tipo de cosa que funcionará para su descripción.

0

Usar el diccionario < string, bool >. Si, por algún motivo, realmente necesita una matriz, intente con el objeto [,] y establezca sus valores según los tipos que desee.

4

Un diccionario funcionará para lo que intenta hacer entonces.

Dictionary<string, bool> controllerDictionary = new Dictionary<string, bool>(); 

para establecer un valor

if (controllerDictionary.ContainsKey(controllerName)) 
    controllerDictionary[controllerName] = newValue; 
else 
    controllerDictionary.Add(controllerName, newValue); 

Para obtener un valor

if (controllerDictionary.ContainsKey(controllerName)) 
    return controllerDictionary[controllerName]; 
else 
    //return default or throw exception 
+0

Puede simplemente usar 'controllerDictionary [controllerName] = newValue;', 'ContainsKey' y' Add' no son necesarios –

+0

Sí, es cierto, es solo se necesita para obtener el –

1

Otra forma de hacerlo es crear una matriz de tipo de objeto, y luego añadir esto a un ArrayList . Aquí hay un código de ejemplo:

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Collections; 
    using System.Collections.Generic; 

    namespace Collections 
    { 
     class Program 
     { 
      static void Main(string[] args) 
      { 
       ArrayList ar = new ArrayList(); 
       object[] o = new object[3]; 
       // Add 10 items to arraylist 
       for (int i = 0; i < 10; i++) 
       { 
        // Create some sample data to add to array of objects of different types. 
        Random r = new Random(); 
        o[0] = r.Next(1, 100); 
        o[1] = "a" + r.Next(1,100).ToString(); 
        o[2] = r.Next(1,100); 
        ar.Add(o); 
       } 
      } 
     } 
    } 
1

Depende de cómo desea utilizar su matriz. ¿Desea buscar el valor con una clave o por su índice? Konamiman sugirió una clase. Pero una clase con dos tipos no es más que un Dictionary<type of key, type of value>. Puede usar un diccionario si desea obtener el valor con una tecla. Al igual que :

Dictionary<string, int> MyDict = new Dictionary<string, int>(); 
MyDict.Add("Brutus", 16); 
MyDict.Add("Angelina", 22); 
int AgeOfAngelina = MyDict["Angelina"]; 

Ahora la desventaja de un diccionario es que, no se puede iterar sobre ella. El orden es indeterminado No puede usar MyDict[0].Value para obtener la edad de Brutus (que es 16).

Se puede usar un

List<KeyValuePair<string, int>> MyList = new List<KeyValuePair<string, int>>(); 

para iterar a través de una matriz 2D de dos tipos diferentes como List apoya iteración. Pero, de nuevo, no puede obtener la edad de Angelina por MyList["Angelina"].Value, pero tendría que usar MyList[0].Value.

Pero también podría usar una tabla de datos. Pero requiere algo más de trabajo inicializar la tabla con sus columnas.

+0

Por supuesto, puede extender con LINQ para usar consultas en sus datos. –

+0

¿Desde cuándo no se puede iterar sobre un diccionario? – claudekennilol

0

"Una matriz multidimensional es una matriz: todo elementsin todas las dimensiones tienen el mismo tipo de"

Cuestiones relacionadas