Как уже отмечали другие, вы должны убедиться, что в условном операторе есть согласованный тип возврата присутствует .(Тонкая особенность C # состоит в том, что, когда мы должны создать тип для выражения среди нескольких альтернатив, выбранная альтернатива всегда будет где-то в выражении; мы никогда не "выдумываем" тип, который не появился.)
Если вас интересуют необычные факты об условном операторе, я рекомендую свои статьи на эту тему:
http://blogs.msdn.com/b/ericlippert/archive/tags/conditional+operator/
Я бы добавил, что это отличная возможностьнаписать метод расширения:
static class MyExtensions
{
public static int? ParseInt(this string s)
{
int value;
return Int32.TryParse(s, out value) ? value : (int?)null;
}
}
И теперь вы можете просто сказать
int? exitNum = fields[13].ParseInt();
, который гораздо приятнее читать.