Почему эти два куска кода не одно и то же?

183
04 сентября 2021, 13:50

Вот расписанный по операциям код - он работает

XElement Image = new XElement("Image");
XAttribute URL = new XAttribute("url", input[i].massive[17]);
Image.Add(URL);
XElement Images = new XElement("Images");
Images.Add(Image);
Ad.Add(Images);

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

Ad.Add(new XElement("Images").Add(new XElement("Image").Add(new XAttribute("url", input[i].massive[17]))));

Чем отличаются эти два куска кода?

Answer 1

Метод Add имеет тип возврата void - то есть он ничего не возвращает.

Это ничего невозможно вставить куда-либо. Visual Studio, если навести курсор на код, выдаёт сообщение об этом:

cannot convert from 'void' to 'object'.

В одну строку код можно переписать следующим образом:

Ad.Add(new XElement("Images", new XElement("Image", new XAttribute("url", input[i].massive[17]))));

Тут используются конструкторы типов XElement, XAttribute.

Код можно отформатировать так, чтобы было видно иерархию вложенности:

Ad.Add(
    new XElement("Images",
        new XElement("Image",
            new XAttribute("url", input[i].massive[17]))));
READ ALSO
Медленно качаются FileStream'ы из MS SQL

Медленно качаются FileStream'ы из MS SQL

В общем, есть метод, который шлет запрос к БД и выкачивает 2 файла весом ~150мбТ

104
передача данных между combobox'ами разных форм

передача данных между combobox'ами разных форм

Подскажите как передать данные между комбобоксами с главной формы на дочернюю

122
Подсчет сокращенных ссылок

Подсчет сокращенных ссылок

Есть у меня задача, суть которой в том, что на вход программы подаю урл, получаю сокращенный урл, при этом урлы хранятся в базеИ нужен подсчет...

106
Ошибка pymysql.err.IntegrityError

Ошибка pymysql.err.IntegrityError

Пытаюсь сделать insert новостей в бдИ чтобы повторные новости не добавлялись

107