Inicialización de ArrayList con literal constante
-
19-09-2019 - |
Pregunta
¿Puede el ArrayList a continuación inicializar directamente sin la necesidad de una matriz de cadenas aFileExt?
private static string[] aFileExt =
{"css", "gif", "htm", "html", "txt", "xml" };
private System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList(aFileExt);
La siguiente línea es el objetivo, pero mi compilador .Net no le gusta:
private static System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList({"css","gif","htm","html","txt","xml"});
Estoy utilizando el .NET Micro Framework y por lo tanto no tienen acceso a tipos genéricos.
Solución
C # 1 o 2:
private static ArrayList alFileTypes =
new ArrayList(new string[] {"css","gif","htm","html","txt","xml"});
C # 3 utilizando una matriz implícitamente mecanografiado:
private static ArrayList alFileTypes =
new ArrayList(new[] {"css","gif","htm","html","txt","xml"});
C # 3 usando un inicializador colección:
private static ArrayList alFileTypes =
new ArrayList{"css","gif","htm","html","txt","xml"};
O crear su propio método de ayuda:
public static ArrayList CreateList(params object[] items)
{
return new ArrayList(items);
}
a continuación:
static ArrayList alFileTypes = CreateList("css","gif","htm","html","txt","xml");
Cualquier razón por la que no está utilizando las colecciones genéricas, por cierto?
Otros consejos
Si está utilizando .NET 2.0 o mayor, usted debe utilizar el tipo List<T>
genéricos (incluso si es List<object>
, lo que le da la misma funcionalidad que ArrayList
).
Si está utilizando .NET 3.5 o superior, puede utilizar esta sintaxis:
private static List<string> fileTypes = new List<string>()
{
"css","gif","htm","html","txt","xml"
};
De cualquier manera, sin embargo, si desea seguir con ArrayList
, sólo se puede hacer:
private static System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList(new object[] {"css","gif","htm","html","txt","xml"});
C # 3.0 con un List<T>
genérico, en lugar de un ArrayList
:
private static List<string> alFileTypes =
new List<string> {"css","gif","htm","html","txt","xml"};
private static System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList(new string [] {"css","gif","htm","html","txt","xml"});
Trate
private static System.Collections.ArrayList alFileTypes = new System.Collections.ArrayList(){"css","gif","htm","html","txt","xml"};
Sí, solo cambia
private static System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList({"css","gif","htm","html","txt","xml"});
a
private static System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList(new string[] {"css","gif","htm","html","txt","xml"});