web-dev-qa-db-fra.com

Initialisation d'ArrayList avec un littéral constant

La liste de tableaux ci-dessous peut-elle être initialisée directement sans avoir besoin d'un 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 l'objectif, 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 .net Micro Framework et n'ai donc pas accès aux types génériques.

40
MandoMando

C # 1 ou 2:

private static ArrayList alFileTypes = 
     new ArrayList(new string[] {"css","gif","htm","html","txt","xml"});

C # 3 utilisant un tableau typé implicitement:

private static ArrayList alFileTypes = 
    new ArrayList(new[] {"css","gif","htm","html","txt","xml"});

C # 3 en utilisant un initialiseur de collection:

private static ArrayList alFileTypes = 
    new ArrayList{"css","gif","htm","html","txt","xml"};

Ou créez votre propre méthode d'assistance:

public static ArrayList CreateList(params object[] items)
{
    return new ArrayList(items);
}

ensuite:

static ArrayList alFileTypes = CreateList("css","gif","htm","html","txt","xml");

Une raison pour laquelle vous n'utilisez pas les collections génériques, au fait?

67
Jon Skeet

Si vous utilisez .NET 2.0 ou supérieur, vous devez utiliser le générique List<T> type (même si c'est List<object>, qui vous donnerait les mêmes fonctionnalités que ArrayList).

Si vous utilisez .NET 3.5 ou supérieur, vous pouvez utiliser cette syntaxe:

private static List<string> fileTypes = new List<string>()
{ 
    "css","gif","htm","html","txt","xml" 
};

Quoi qu'il en soit, cependant, si vous voulez vous en tenir à ArrayList, vous pouvez simplement faire:

private static System.Collections.ArrayList alFileTypes = 
 new System.Collections.ArrayList(new object[] {"css","gif","htm","html","txt","xml"});
13
Adam Robinson

C # 3.0 avec un générique List<T>, plutôt qu'un ArrayList:

private static List<string> alFileTypes =
    new List<string> {"css","gif","htm","html","txt","xml"};
8
Thomas Levesque

Essayer

private static System.Collections.ArrayList alFileTypes =   new System.Collections.ArrayList(){"css","gif","htm","html","txt","xml"};
1
TLiebe
private static System.Collections.ArrayList alFileTypes = 
 new System.Collections.ArrayList(new string [] {"css","gif","htm","html","txt","xml"});
1
Sean Bright

oui, changez juste

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"});
0
kemiller2002