Швидкий спосіб створити список значень у C #?


106

Я шукаю швидкий спосіб створити список значень у 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: ініціалізатор колекції, а не ініціалізатор об'єктів.
Тімві


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

-5

Список значень швидко? Або навіть список об’єктів!

Я лише початківець на мові C #, але люблю використовувати

  • Хештейн
  • Арраїст
  • Дані даних
  • Набори даних

тощо.

Існує надто багато способів зберігання предметів

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.