Краткий способ инициализации коллекции - PullRequest
1 голос
/ 27 мая 2011

Я могу кратко проинициализировать класс, используя что-то вроде:

public static readonly type TYPE_NAME = new type()
        {
            ClientIp = "ClientIp",
            LanguageCode = "LanguageCode",
            SessionToken = "SessionToken",
            SystemKey = "SystemKey"
        };

Однако возможно ли инициализировать коллекцию аналогичным образом (унаследованным от List<>)?

Ответы [ 4 ]

8 голосов
/ 27 мая 2011
List<string> strList = new List<string>{ "foo", "bar" };

List<Person> people = new List<Person>{
                                new Person { Name = "Pete", Age = 12},
                                new Person { Name = "Jim", Age = 15}
                      };
0 голосов
/ 27 мая 2011

Вы можете использовать инициализатор коллекции. Чтобы использовать это,

List<int> collection=  List<int>{1,2,3,...};

Чтобы использовать инициализатор коллекции, он не обязательно должен быть типа List. Инициализатор коллекции может использоваться для тех типов, которые реализуют IEnumerable и имеют один открытый метод Add.

Вы используете функцию инициализации коллекции даже в следующем типе.

public class SomeUnUsefulClass:IEnumerable
    {
        public IEnumerator GetEnumerator()
        {
            throw new NotImplementedException();
        }
        public void Add(int i)
        {
            //It does not do anything.
        }
    }

Как,

 SomeUnUsefulClass cls=new SomeUnUsefulClass(){1,2,3,4,5};

, что совершенно верно.

0 голосов
/ 27 мая 2011

Да:

var l = new List<int>() { 1, 1, 2, 3, 5 };
0 голосов
/ 27 мая 2011

Использовать инициализатор коллекции

http://msdn.microsoft.com/en-us/library/bb384062.aspx

List<int> list = new List<int> { 1, 2, 3 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...