ArrayList avec littérale Initialisation constante
-
19-09-2019 - |
Question
Peut-ArrayList ci-dessous être initialisé directement, sans la nécessité de tableau de chaînes aFileExt?
private static string[] aFileExt =
{"css", "gif", "htm", "html", "txt", "xml" };
private System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList(aFileExt);
La ligne ci-dessous est le but, mais mon compilateur .Net ne l'aime pas:
private static System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList({"css","gif","htm","html","txt","xml"});
J'utilise le Micro Framework .net et n'ont donc pas accès à des types génériques.
La solution
C # 1 ou 2:
private static ArrayList alFileTypes =
new ArrayList(new string[] {"css","gif","htm","html","txt","xml"});
C # 3 en utilisant un tableau implicitement tapé:
private static ArrayList alFileTypes =
new ArrayList(new[] {"css","gif","htm","html","txt","xml"});
C # 3 en utilisant une collection initialiseur:
private static ArrayList alFileTypes =
new ArrayList{"css","gif","htm","html","txt","xml"};
Ou créer votre propre méthode d'assistance:
public static ArrayList CreateList(params object[] items)
{
return new ArrayList(items);
}
alors:
static ArrayList alFileTypes = CreateList("css","gif","htm","html","txt","xml");
Toute raison pour laquelle vous n'êtes pas en utilisant les collections génériques, btw?
Autres conseils
Si vous utilisez .NET 2.0 ou plus, vous devriez utiliser le type de List<T>
générique (même si elle est List<object>
, qui vous aurait donné les mêmes fonctionnalités que ArrayList
).
Si vous utilisez .NET 3.5 ou plus, vous pouvez utiliser cette syntaxe:
private static List<string> fileTypes = new List<string>()
{
"css","gif","htm","html","txt","xml"
};
De toute façon, cependant, si vous voulez coller avec ArrayList
, vous pouvez simplement faire:
private static System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList(new object[] {"css","gif","htm","html","txt","xml"});
C # 3.0 avec un List<T>
générique, plutôt que d'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"});
Essayez
private static System.Collections.ArrayList alFileTypes = new System.Collections.ArrayList(){"css","gif","htm","html","txt","xml"};
oui, il suffit de changer
private static System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList({"css","gif","htm","html","txt","xml"});
à
private static System.Collections.ArrayList alFileTypes =
new System.Collections.ArrayList(new string[] {"css","gif","htm","html","txt","xml"});