Не делать ключевое слово в С#?
Есть ли ключевое слово "ничего не делать" на С#?
Например, я хочу использовать тернарный оператор, в котором одно из действий должно не предпринимать никаких действий:
officeDict.ContainsKey("0") ? DO NOTHING : officeDict.Add("0","")
Ответы
Ответ 1
Нет, такого ключевого слова нет. Кроме того, оператор ?:
не предназначен для принятия решений. Это означало для принятия значения (или, более технически, выражения значений).
На самом деле вы действительно хотите использовать условие if для такого рода принятия решений:
if (!officeDict.ContainsKey("0"))
officeDict.Add("0", "");
Ответ 2
Как указывали другие, использование выражения if
здесь гораздо более идиоматично.
Но чтобы ответить на то, что вы просите, вы можете использовать лямбда и делегатов:
// Bad code, do not use:
(officeDict.ContainsKey("0") ? (Action)(() => { }) : () => officeDict.Add("0", ""))();
Ответ 3
Отбросив тот факт, что это плохая идея, вы действительно можете создать метод "DoNothing", используя атрибут, чтобы условно испустить вызов метода (обратите внимание, что это зависит от соглашения, которое вы не #define "НИКОГДА", условие.) Из-за ConditionalAttribute вызовы метода не будут испускаться, и у вас есть раздел "nop" кода.
[Conditional("NEVER")]
public void DoNothing()
{
}
Тем не менее, как уже отмечалось несколькими другими, это не рекомендуется.
Ответ 4
Почему вы хотите использовать тернарный оператор, если вы только хотите что-то сделать в одном из случаев?
Почему бы вам просто не инвертировать условие и использовать оператор if?
if (!officeDict.ContainsKey("0"))
{
officeDict.Add("0","")
}
Ответ 5
Почему бы просто не использовать оператор if, чтобы код выглядел так:
if(!officeDict.ContainsKey("0"))
officeDict.Add("0","")
Ответ 6
Тернарный оператор предназначен для выражений, а не для операторов.
Вам нужен оператор if
.
Ответ 7
Почему бы не написать его простым if
?
if (!officeDict.ContainsKey("0"))
officeDict.Add("0","")
Это будет более читаемо.
Ответ 8
Почему бы вам просто не использовать инструкцию IF для этого?
if(!officeDict.ContainsKey("0")) officeDict.Add("0","");
Ответ 9
Вместо этого используйте оператор if.
if (!officeDict.ContainsKey("0"))
{
officeDict.Add("0","")
}
Ответ 10
Попробуйте это (grinns)
if (officeDict.ContainsKey("0"))
Thread.Sleep(1)
else
officeDict.Add("0","")