Necesito algo similar a List<String, Int32, Int32>
. La lista solo admite un tipo a la vez, y el diccionario solo dos a la vez. ¿Hay alguna manera clara de hacer algo como lo anterior (una lista/colección genérica multidimensional)?¿Hay algo así como Lista <String, Int32, Int32> (lista genérica multidimensional)
Respuesta
mejor manera es crear un contenedor para que sea una clase
public class Container
{
public int int1 { get; set; }
public int int2 { get; set; }
public string string1 { get; set; }
}
a continuación en el código donde se necesite
List<Container> myContainer = new List<Container>();
+1, ya que no requiere una tupla .Net4 y se puede implementar trivialmente con una clase, pero -1 porque debe evitar los campos públicos en una clase. Implementar como una propiedad y usar '' simple; set;} 'en su lugar. –
Probablemente necesites anular Equals y GetHashCode también –
type El contenedor debe ser una estructura inmutable ya que solo representa valores. –
En .NET 4 puede usar List<Tuple<String, Int32, Int32>>
.
Lamentablemente estoy en .NET 3.5, pero lo tendré en cuenta para 4.0. – Alex
Bueno, no se puede hacer esto hasta C# 3.0, use Tuples si puede usar C# 4.0 como se menciona en otras respuestas.
Sin embargo, en C# 3.0: cree un Immutable structure
y ajuste las inserciones de todos los tipos dentro de la estructura y pase el tipo de estructura como argumento de tipo genérico a su lista.
public struct Container
{
public string String1 { get; private set; }
public int Int1 { get; private set; }
public int Int2 { get; private set; }
public Container(string string1, int int1, int int2)
: this()
{
this.String1 = string1;
this.Int1 = int1;
this.Int2 = int2;
}
}
//Client code
IList<Container> myList = new List<Container>();
myList.Add(new Container("hello world", 10, 12));
Si tienes curiosidad por qué crear estructuras inmutables - checkout here.
Según su comentario, parece que necesita una estructura con dos enteros almacenados en un diccionario con una clave de cadena.
struct MyStruct
{
int MyFirstInt;
int MySecondInt;
}
...
Dictionary<string, MyStruct> dictionary = ...
Esto supone que las cadenas están destinadas a ser únicas. –
- 1. ¿Hay algo así como una lista genérica en Cocoa/Objective-C?
- 2. ¿Tiene C++ algo así como la lista <string> en C#?
- 3. Enlazando una lista genérica <string> a un ComboBox
- 4. ¿Hay algo así como `last` for` map`?
- 5. ¿Hay algo así como Codecademy para Java
- 6. ¿Hay algo así como indicadores en Lua?
- 7. ¿Hay algo así como un modelo funcional?
- 8. ¿Hay algo así como find_if en Java?
- 9. ¿Hay algo así como bpython para Ruby?
- 10. ¿Hay algo así como AutoMapper para Scala?
- 11. ¿Hay algo así como Incanter para Haskell?
- 12. ¿Hay algo así como "global ::" para VB.NET?
- 13. ¿Hay algo así como WMI para Linux?
- 14. Algo así como imprimir END << END; en C++?
- 15. Hibernate, Lista <String>
- 16. Comparar Lista <String[]>
- 17. lista genérica <T> como parámetro en el método
- 18. ¿Hay algo así como memcached, pero para listas ordenadas?
- 19. jQuery AutoComplete con la lista <string> como Fuente
- 20. Haga nuestra propia lista <string, string, string>
- 21. Clasificación Lista <String> en C#
- 22. C# - deserializar una lista <String>
- 23. Lista <String> readStringArray en Parcelable
- 24. ¿Hay algo así como un carácter comodín en Java?
- 25. ¿Hay algo así como herencia de anotación en java?
- 26. y la lista genérica
- 27. Una lista genérica de genéricos
- 28. ¿Cómo puedo convertir la lista <string> en la lista <myEnumType>?
- 29. Lista de Linq <string> unión
- 30. Lista <string> Evento INotifyPropertyChanged
La duplicación de Int32 es interesante. ¿Que estás tratando de hacer? –
Tengo que asociar dos números diferentes semánticamente con una cadena, que luego se utilizará para representar datos en una vista. – Alex
Creo que @Alex tiene antecedentes de 'java' como yo. –