MonoTouch Linq to XML, как сделать оператор IF встроенным - PullRequest
4 голосов
/ 04 февраля 2011

Здравствуйте, у меня следующий вопрос, возможно ли сделать встроенное выражение if?

var contact= new XElement("Contact",
                                                new XAttribute("id", id.ToString()),
                                                new XElement("ContactData",
                                                             new XElement("Prefix", person.Prefix),
                                                             new XElement("FirstName", person.FirstName)
                                                );

Потому что иногда person.x может быть нулевым, и это приносит мне ошибки.

Заранее спасибо за любую помощь.

Ответы [ 3 ]

5 голосов
/ 04 февраля 2011

Вы можете попробовать что-то вроде этого

var contacts = new XElement("Contact",
        new XAttribute("id", id.ToString()),
        new XElement("ContactData",
            new XElement("Prefix", person.Prefix == null ? "" : person.Prefix),
            new XElement("FirstName", person.FirstName == null ? "" : person.FirstName));

Синтаксис: (condition ? truevalue : falsevalue)

0 голосов
/ 05 февраля 2011

Вы должны использовать нуль-объединяющий оператор для значений по умолчанию, если вы не хотите, чтобы они оставались null:

var contact = new XElement ("Contact",
    new XAttribute ("id", id.ToString ()),
    new XElement ("ContactData",
        new XElement("Prefix", person.Prefix ?? string.Empty),
        new XElement("FirstName", person.FirstName ?? string.Empty)
    )
);
0 голосов
/ 04 февраля 2011

Что вы хотите, чтобы person.x было null?

Если вы хотите установить значение по умолчанию, вы можете обернуть person.Prefix (например) в метод, который принимает строку и возвращает либо строку, либо некоторое допустимое значение по умолчанию.

В противном случаеесть это:

string x = null;
string y = x ?? "f";

y становится "f", если x равно null, в противном случае он получает значение x.

...