#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 за совет написать читаемый / устойчивый код. Это помогает моим коллегам не убивать меня.