Инициализация 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 и, следовательно, не имею доступа к родовым типам.
Ответы
Ответ 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"});