¿Podemos hacer nuestro propio List<string, string, string>
en C# .NET? Necesito hacer una lista con 3 cadenas diferentes como un solo elemento en la lista.Haga nuestra propia lista <string, string, string>
Respuesta
Por supuesto que puede crear su propia clase llamada List
con tres parámetros de tipo genérico. Me gustaría fuertemente desalentarlo de hacerlo así. Confundiría al diablo a cualquiera que use su código.
En su lugar, ya sea uso List<Tuple<string, string, string>>
(si está utilizando .NET 4, de todos modos) o (preferiblemente) crear su propia clase para encapsular las tres cadenas de una manera significativa, a continuación, utilizar List<YourNewClass>
.
Crear su propia clase lo hará mucho más claro cuando esté escribiendo y leyendo el código. Al dar nombres a las tres cadenas diferentes involucradas, todos sabrán a qué se refieren. También puede dar más comportamiento a la clase cuando lo necesite.
Puede usar una lista de tuples. De este modo:
List<Tuple<string, string, string>>
Tal vez algo como esto:
var ls= new List<Tuple<string,string,string>>();
¿Qué tal hacer un List<Tuple<string, string, string>>
?
Una mejor idea podría ser, si cada una de las cadenas tiene un significado específico, para ponerlas todas en una clase y luego crear una lista de eso.
Puede usar un Tuple para lograr eso.
Por ejemplo:
var list = new List<Tuple<string,string,string>>();
para iterar sobre los valores que lo desea, puede hacer un simple:
list.ForEach(x=>{
//x is a Tuple
});
o para encuentran algunos tupple específico, posible que desee para hacer lo siguiente:
var list = new List<Tuple<string,string,string>>{
new Tuple<string,string,string>("Hello", "Holla", "Ciao"),
new Tuple<string,string,string>("Buy", "--", "Ciao")
};
list.Where(x=>x.Item2 == "--");
Esto devolverá la última Tupla.
No, lamentablemente esto no funciona. Lo mejor que puede hacer es crear una lista de listas o utilizar alguna forma de implementación de la interfaz IDictionary.
Aunque, dicho esto, si tiene tres elementos de datos que pertenecen juntos de esta manera, es probable que valga la pena crear una clase para contenerlos.
Eso le daría la oportunidad de pasar una lista alrededor de su aplicación y asignar nombres significativos a cada elemento de datos. Nunca subestimes el poder de legibilidad seis meses después.
En realidad, rayar eso, la solución de @Tigran no solo es mejor que la mía, sino que también me enseñó algo que no sabía . Agradable. – inksmithy
Puede definir una Lista e implementar las interfaces necesarias (como IList). Códigos soplan.
public class List<T1, T2, T3> : IList
{
#region IList Members
public int Add(object value)
{
throw new NotImplementedException();
}
public void Clear()
{
throw new NotImplementedException();
}
public bool Contains(object value)
{
throw new NotImplementedException();
}
public int IndexOf(object value)
{
throw new NotImplementedException();
}
public void Insert(int index, object value)
{
throw new NotImplementedException();
}
public bool IsFixedSize
{
get { throw new NotImplementedException(); }
}
public bool IsReadOnly
{
get { throw new NotImplementedException(); }
}
public void Remove(object value)
{
throw new NotImplementedException();
}
public void RemoveAt(int index)
{
throw new NotImplementedException();
}
public object this[int index]
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
#endregion
#region ICollection Members
public void CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
public int Count
{
get { throw new NotImplementedException(); }
}
public bool IsSynchronized
{
get { throw new NotImplementedException(); }
}
public object SyncRoot
{
get { throw new NotImplementedException(); }
}
#endregion
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
throw new NotImplementedException();
}
#endregion
}
Sin embargo, List<Tuple<string,string,string>>
se recomienda.
public class Listt< T, T1, T2>
{
public Listt()
{
}
public void Add(T item, T1 item1, T2 item3)
{
}
}
public partial class MyApp : Window
{
public MyApp()
{
InitializeComponent();
Listt<string, string, string> customList = new Listt<string, string, string>();
customList.Add("we","are","here");
}
}
Por ejemplo:
var list = new List<Tuple<string, string, string>>();
var tuple = Tuple.Create("a", "b", "c");
list.Add(tuple);
Para obtener más información, busque en MSDN.
recomiendo esta solución
public class MyCustomClass
{
public string MyString1 { get; set; }
public string MyString2 { get; set; }
public string MyString3 { get; set; }
}
class MyApp
{
public MyApp()
{
List<MyCustomClass> customList = new List<MyCustomClass>();
customList.Add(new MyCustomClass
{
MyString1 = "Hello",
MyString2 = "Every",
MyString3 = "Body",
});
}
}
alguien trataba dynamic
?
var list = new List<dynamic>();
list.Add(new { Name = "SampleN", Address = "SampleA", Email = "SampleE" });
var name = list[0].Name;
- 1. Hibernate, Lista <String>
- 2. Comparar Lista <String[]>
- 3. LINQ - Lista de giros en <string> Dictionary <string, string>
- 4. ordenar una lista de Mapa <String, String>
- 5. IDictionary <string, string> versus Dictionary <string, string>
- 6. C# - deserializar una lista <String>
- 7. Lista de Linq <string> unión
- 8. Clasificación Lista <String> en C#
- 9. Lista <String> readStringArray en Parcelable
- 10. Lista <string> Evento INotifyPropertyChanged
- 11. Lista de clasificación <String[]>
- 12. Encuadernación Lista <string> a ComboBox
- 13. C# Convert List <string> a Dictionary <string, string>
- 14. Uso FlurryAgent.onEvent (String EVENTID, mapa <String, String> Parámetros)
- 15. StringDictionary vs Dictionary <string, string>
- 16. Map <String, String> JSON en
- 17. casting ArrayList <String> a String []
- 18. JPA Map <String, String> mapping
- 19. ¿Cómo hacer comparación de valores entre dos Dictionary <string, lista <string>> objetos
- 20. Mejor contenedor de cadena: StringCollection, Colección <string>, Lista <string>, ArrayList, ...?
- 21. Cómo convertir Lista <string> a ReadOnlyCollection <string> en C#
- 22. JAXB para unmarshall <string> foobar</string>
- 23. Lista <Map <String, Object >> to org.json.JSONObject?
- 24. Convertir <Enum> a la lista <string>
- 25. Cómo convertir Map <String, String> a Map <Long, String> usando guava
- 26. ¿Por qué no puedo crear un diccionario <string, dictionary <string, string >>?
- 27. Cómo convertir Dictionary <string, object> a Dictionary <string, string> en C#
- 28. No se puede convertir un HashMap <String, String> en una interfaz que extiende Map <String, String>
- 29. Cómo convertir clases en Dictionary <string, string>?
- 30. Conversión de la lista <String> a String [] en Java
cómo recuperar los valores de la Lista de Tuple creada? – HotTester
@HotTester: ¿a qué te refieres con recuperar los valores? – Arion
@HotTester: utilice las propiedades de 'Tuple <,,>', pero será mucho menos legible que crear su propia clase. –