2014-12-12 2 views
3

У меня есть консольное приложение C#. У моего приложения есть класс под названием Item. Пункт определяется следующим образом:Определить список объектов в C#

public class Item { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

Я хочу построить List<Item> items; В моей голове C# имел сокращенный способ определения списка во время выполнения. Что-то вроде:

List<Item> items = new List() 
    .Add(new Item({ Id=1, Name="Ball", Description="Hello" }) 
    .Add(new Item({ Id=2, Name="Hat", Description="Test" }); 

Теперь я не могу найти короткий синтаксис, как я упоминаю. Я мечтаю? Или есть короткий способ создания списка коллекций?

Спасибо!

ответ

1

Он имеет. Синтаксис будет выглядеть так:

10

Вы можете использовать object & collection initializer (C# 3.0 и выше), как это:

List<Item> items = new List<Item> 
{ 
    new Item { Id=1, Name="Ball", Description="Hello" }, 
    new Item { Id=2, Name="Hat", Description="Test" } 
}; 
0

на мой взгляд, Амир Поповича ответ является правильным, и это так и должно быть ...

, но в случае, если мы хотим, чтобы объявить этот список такой же, как вы упомянуто в вопросе:

List<Item> items = new List() 
    .Add(new Item({ Id=1, Name="Ball", Description="Hello" }) 
    .Add(new Item({ Id=2, Name="Hat", Description="Test" }); 

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

проверить этот код (небольшое приложение консоли)

using System; 
using System.Collections.Generic; 

public class Program 
{ 
    public static void Main() 
    { 
     List<Item> items = new List<Item>() 
      .AddAlso(new Item{ Id=1, Name="Ball", Description="Hello" }) 
      .AddAlso(new Item{ Id=2, Name="Hat", Description="Test" }); 

     foreach(var item in items) 
      Console.WriteLine("Id {0} Name {1}, Description {2}",item.Id,item.Name,item.Description); 
    } 
} 

public static class Extensions 
{ 
    public static List<T> AddAlso<T>(this List<T> list,T item) 
    { 
     list.Add(item); 
     return list; 
    } 
} 

public class Item 
{ 
    public int Id{get;set;} 
    public string Name{get;set;} 
    public string Description{get;set;} 
} 

и здесь работает DEMO

Смежные вопросы