MandoMando
MandoMando

Reputation: 5515

Initializing ArrayList with constant literal

Can the ArrayList below be initialized directly without the need for aFileExt string array?

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

The line below is the goal, but my .Net Compiler does not like it:

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

I am using the .net Micro Framework and thus do not have access to generic types.

Upvotes: 48

Views: 70050

Answers (6)

Thomas Levesque
Thomas Levesque

Reputation: 292475

C# 3.0 with a generic List<T>, rather than an ArrayList :

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

Upvotes: 10

TLiebe
TLiebe

Reputation: 7986

Try

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

Upvotes: 1

Adam Robinson
Adam Robinson

Reputation: 185643

If you're using .NET 2.0 or greater, you should be using the generic List<T> type (even if it's List<object>, which would given you the same functionality as ArrayList).

If you're using .NET 3.5 or greater, you can use this syntax:

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

Either way, however, if you want to stick with ArrayList, you can just do:

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

Upvotes: 15

Jon Skeet
Jon Skeet

Reputation: 1501163

C# 1 or 2:

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

C# 3 using an implicitly typed array:

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

C# 3 using a collection initializer:

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

Or create your own helper method:

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

then:

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

Any reason why you're not using the generic collections, btw?

Upvotes: 73

kemiller2002
kemiller2002

Reputation: 115508

yes, just change

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

to

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

Upvotes: 0

Sean Bright
Sean Bright

Reputation: 120654

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

Upvotes: 1

Related Questions