Условный оператор
var result = x ? y : z;
можно рассматривать в качестве ярлыка на что-то вроде
T result;
if (x)
result = y;
else
result = z;
с T
быть типом как y
и z
. Это ясно показывает, что y
и z
должны решить значений (а не заявления) в же типа так весь оператор имеет последовательный тип.
Это также дает понять, что вы не можете просто использовать любой вызов метода для y
или z
, но только такой метод вызывает этот результат в значений одного и того же типа.
Таким образом, хотя это нормально писать
var value = condition ? func1() : func2(someValue);
пока func1
и func2
являются методы, возвращающие значения одного и того же типа, что это не нормально, чтобы написать
var value = condition ? return : null;
return
не и вы не можете использовать return
как один из операндов в условном операторе. Вы не можете даже сделать это:
var value = condition ? return true : false;
Вы даже могли бы сделать что-то вроде этого:
if ((File.Exists(dest) ? CalcFileSize(dest) : 0) > 0)
{
// Do something if the file exists and it has content
}
Это гораздо проще (и правильно) в этом случае просто использовать старый добрый if
:
if (File.Exists(dest))
return;
File.Copy(template, dest);
Почему вы пытаетесь использовать условный оператор здесь в первую очередь? Очевидно, что ваши требования не соответствуют тому, что он делает вообще, поэтому не используйте его. – Servy
'if (! File.Exists (dest)) {File.Copy (template, dest)}'. – zzzzBov
Обратите внимание, как правильный пример кода с помощью @zzzzBov в основном представляет собой прямой перевод первого предложения вашего вопроса :) – CompuChip