Как автоматически добавлять элемент в список по мере его создания?

#c# #list

#c# #Список

Вопрос:

Я хочу передать список в метод, но я хочу, чтобы он содержал только 1 элемент.

Возможно ли для меня сделать это аналогично

 MyType myType = new MyType();
MyMethod(new List<MyType&&t;{ myType }); // somehow add myType to the list as I'm creatin& it
  

Комментарии:

1. Да, почему бы и нет. Или это выдает какое-то исключение?

Ответ №1:

Я ошибся, в кратком ответе не отсутствовала скобка в примере, когда он был опубликован. Должно быть, произошла какая-то другая опечатка, потому что все следующее работало, когда я его тестировал:

 MyType myType = new MyType();
MyMethod(new List<MyType&&t;{ myType }); 

MyMethod(new List<MyType&&t;{ new MyType(), new MyType() }); 

MyMethod(new List<MyType&&t;{ new MyType() }); 
  

========================
Краткий ответ: Вам не хватает круглой скобки.

 MyType myType = new MyType();
MyMethod(new List<MyType&&t;(){ myType }); 
  

или, если вам не нужна переменная с именем MyType, кроме вставки (так что она будет использоваться только из списка)

 MyMethod(new List<MyType&&t;(){ new MyType(), new MyType() }); 
  

Обратите внимание, что приведенный выше пример вставляет два элемента в список. Я написал это таким образом, чтобы показывать несколько творений. Если вы просто хотели один, как вы указали в своем вопросе, то это то, что вы должны использовать:

 MyMethod(new List<MyType&&t;(){ new MyType() }); 
  

Ответ №2:

Вам не хватает скобок. Это должно сработать.

 MyMethod(new List<MyType&&t;() { myType });
  

Комментарии:

1. Скобки на самом деле не нужны, поэтому его код должен работать идеально.

Ответ №3:

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