Оптимизировать несколько, если условия для проверки флага - PullRequest
1 голос
/ 30 января 2020
[Flags]
public enum PatternTypes
{
  A = 1,
  B = 2,
  C = 4,
  D = 8,
  E = 16,
  F = 32,
  G = 64
}

patternsToFind [это PatternTypes]: содержит значение флагов, чтобы найти номер шаблона, например A | B | E, который вернет нам A, B and E результат шаблона в списке

if patternsToFind.HasFlag(A) {call patternA() and add result to list}
if patternsToFind.HasFlag(B) {call patternB() and add result to list}
if patternsToFind.HasFlag(C) {call patternC() and add result to list}
if patternsToFind.HasFlag(D) {call patternD() and add result to list}
if patternsToFind.HasFlag(E) {call patternE() and add result to list}

вот так, у меня есть шаблон 20, так что я должен использовать для его оптимизации? Чередуйте несколько условий. Либо я должен написать это 20 раз.

1 Ответ

1 голос
/ 30 января 2020

Вы можете перечислить определенные значения перечисления во время выполнения;

   foreach(PatternTypes value in Enum.GetValues(typeof(PatternTypes))){
       if (patternsToFind.HasFlag(value)){
           // ...
       }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...