Как отслеживать условия(OR) при котором происходит вхождение в блок?

string str = "string";
			int num = 3;
			ConsoleColor color = ConsoleColor.DarkRed;
			
			if(String.Equals(str, "string2") || num.Equals(3) || color.Equals(ConsoleColor.DarkRed))
			{
				//TODO
			}


Всем привет. "Что за бред он написал?" спросите вы. Было куча ситуаций когда нужно было отследить при каком именно условия начался выполняться блок TODO. Создавать для каждого проверки свои блоки if()? - получится повторяющийся код. Конкретно в этом условие вход происходит из-за num.Equals(3) и color.Equals(ConsoleColor.DarkRed). Так вот, как определить из-за каких произошел вход? Может есть какие-то специальные инструкции?
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ответы на вопрос 3
@alexxandr
you'll see in memory only 0xDEADFACE
сделайте так:
cond_num = 0 ;
if (/*condition1*/) {cond_num =1;}
else if (/*condition2*/) {cond_num =2;}
else if (/*condition3*/) {cond_num =3;}
if (cond_num > 0)
{
printf("Condition %d passed/n", cond_num);
//TODO
}
}
Ответ написан
Комментировать
gbg
@gbg Куратор тега Компьютерные сети
Любые ответы на любые вопросы
Создавайте отдельные блоки. Повторяющийся код выносите в процедуры.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
А вы напишите маленькую функцию логирования которая возвращает true и в каждую проверку допишите что-то вроде "num.Equals(3) && WriteLog("num.Equals")". Соответственно узнаете в логах из-за какого условия вы туда провалились. Хотя упадет производительность из-за такой вот ерунды.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы