Подтвердить что ты не робот

Инициализация ArrayList с постоянным литералом

Может ли строка ArrayList быть инициализирована непосредственно без использования массива строк aFileExt?

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

Следующая строка - это цель, но мой .Net компилятор не нравится:

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

Я использую .net Micro Framework и, следовательно, не имею доступа к родовым типам.

4b9b3361

Ответ 1

С# 1 или 2:

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

С# 3 с использованием неявно типизированного массива:

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

С# 3 с использованием инициализатора коллекции:

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

Или создайте свой собственный вспомогательный метод:

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

то

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

Любая причина, по которой вы не используете общие коллекции, btw?

Ответ 2

Если вы используете .NET 2.0 или выше, вы должны использовать общий тип List<T> (даже если он List<object>, который предоставил бы вам ту же функциональность, что и ArrayList).

Если вы используете .NET 3.5 или выше, вы можете использовать этот синтаксис:

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

В любом случае, если вы хотите придерживаться ArrayList, вы можете просто сделать:

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

Ответ 3

С# 3.0 с общим List<T>, а не ArrayList:

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

Ответ 4

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

Ответ 5

Try

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

Ответ 6

да, просто измените

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