Быстрый способ создать список значений на C #?


108

Я ищу быстрый способ создать список значений на C #. В Java я часто использую приведенный ниже фрагмент:

List<String> l = Arrays.asList("test1","test2","test3");

Есть ли в C # эквивалент, кроме очевидного ниже?

IList<string> l = new List<string>(new string[] {"test1","test2","test3"});

Ответы:



19

Если вы хотите уменьшить беспорядок, подумайте

var lst = new List<string> { "foo", "bar" };

При этом используются две функции C # 3.0: вывод типа ( varключевое слово) и инициализатор коллекции для списков.

В качестве альтернативы, если вы можете обойтись массивом, он будет еще короче (на небольшую сумму):

var arr = new [] { "foo", "bar" };

2
Я не обычно подбираю структуры данных , на основании которых один занимает меньше символов для инициализации ...
Harrichael

1
@Harrichael: Верно, и я тоже. Но если вам не нужен список, нет причин использовать его.
Конрад Рудольф

10

В C # 3 вы можете:

IList<string> l = new List<string> { "test1", "test2", "test3" };

Здесь используется новый синтаксис инициализатора коллекции в C # 3.

В C # 2 я бы просто использовал ваш второй вариант.


Nitpick: инициализатор коллекции, а не инициализатор объекта.
Timwi


5

Вы можете уронить new string[]деталь:

List<string> values = new List<string> { "one", "two", "three" };


3

Вы можете сделать это с помощью

var list = new List<string>{ "foo", "bar" };

Вот несколько других распространенных экземпляров других распространенных структур данных:

Словарь

var dictionary = new Dictionary<string, string> 
{
    { "texas",   "TX" },
    { "utah",    "UT" },
    { "florida", "FL" }
};

Список массивов

var array = new string[] { "foo", "bar" };

Очередь

var queque = new Queue<int>(new[] { 1, 2, 3 });

Стек

var queque = new Stack<int>(new[] { 1, 2, 3 });

Как вы можете видеть, в большинстве случаев это просто добавление значений в фигурных скобках или создание экземпляра нового массива, за которым следуют фигурные скобки и значения.


1

Вы можете создать вспомогательный общий статический метод для создания списка:

internal static class List
{
    public static List<T> Of<T>(params T[] args)
    {
        return new List<T>(args);
    }
}

И тогда использование очень компактное:

List.Of("test1", "test2", "test3")

1

Если вы хотите создать типизированный список со значениями, вот синтаксис.

Предполагая, что класс Студента вроде

public class Student {
   public int StudentID { get; set; }
   public string StudentName { get; set; }
 }   

Вы можете составить такой список:

IList<Student> studentList = new List<Student>() { 
                new Student(){ StudentID=1, StudentName="Bill"},
                new Student(){ StudentID=2, StudentName="Steve"},
                new Student(){ StudentID=3, StudentName="Ram"},
                new Student(){ StudentID=1, StudentName="Moin"}
            };

Вам даже не нужны ()символы s после new List<Student>и new Student.
шлингель

-5

Список ценностей быстро? Или даже список предметов!

Я только новичок в языке C #, но мне нравится использовать

  • Хеш-таблица
  • Arraylist
  • Таблица данных
  • Наборы данных

и т.п.

Слишком много способов хранить предметы

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.