41 votes

Initialisation de ArrayList avec un littéral constant

La liste de tableaux ci-dessous peut-elle être directement initialisée sans avoir besoin d'un tableau de chaînes FileExt?

 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.

69voto

Jon Skeet Points 692016

C # 1 ou 2:

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

C # 3 utilisant un tableau implicitement typé:

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

C # 3 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);
}
 

puis:

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

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

13voto

Adam Robinson Points 88472

Si vous utilisez .NET 2.0 ou supérieur, vous devriez utiliser le type générique List<T> (même s'il s'agit de List<object> , ce 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 souhaitez conserver ArrayList , vous pouvez simplement faire:

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

8voto

Thomas Levesque Points 141081

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"};
 

1voto

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

1voto

TLiebe Points 6433

Essayer

 private static System.Collections.ArrayList alFileTypes =   new System.Collections.ArrayList(){"css","gif","htm","html","txt","xml"};
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X