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