Логическое перечисление в C#

#c# #enums

#c# #перечисления

Вопрос:

У меня есть этот метод

 public enum Values
{
    True= true,
    False=false
};
public static string GetValues(bool values)
{
    string status = "";
    switch (values)
    {
        case(bool)UIHelper.Values.False:

    }
}
  

Я хочу иметь это enum как boolean . В нем говорится, что:

Значения не могут быть приведены как bool.

Как я могу это сделать, чтобы у меня это было boolean ?

Комментарии:

1. 0 и 1 соответствуют false и true

2. Если вам нужно логическое значение, то почему бы не придерживаться использования bool вместо перечисления?

3. @CallumBradbury На самом деле ноль соответствует false, а не ноль соответствует true.

4. @rory.ap это то, что я сказал, брат

5. @rory.ap На самом деле в C # целочисленные значения не сопоставляются с bool . Также я должен сказать, Братан сейчас?

Ответ №1:

Конечно, вы можете сопоставить 0 ( Service ) и 1 ( Serial ), но зачем сопоставлять это в первую очередь? Почему бы не использовать bool с самого начала?

 public static class UnlPointValues
{
    public const bool Serial = true;
    public const bool Service = false;
}

public static string GetUnloadingPointValues(bool values)
{
    string status = "";
    switch (values)
    {
        case UIHelper.UnlPointValues.Serial:

    }
}
  

Ответ №2:

Я не вижу, что вам нужно enum здесь.

 public static string GetUnloadingPointValues(bool isSerial)
{
    return isSerial ? "Serial" : "Service";
}
  

Или любые string значения, которые вы хотите отобразить.

Ответ №3:

Если вам нужно придерживаться enum , вы можете реализовать метод расширения:

   public enum Values {
    True,
    False,
    // and, probably, some other options
  };

  public static class ValuesExtensions {
    public static bool ToBoolean(this Values value) {
      // which options should be treated as "true" ones
      return value == Values.False;
    }
  }
  

 // you, probably want to check if UIHelper.Values is the same as values 
if (values == UIHelper.Values.ToBoolean()) {
  ...
}
  

Ответ №4:

Используйте 0 for false и 1 for true вместо этого в сочетании с Convert.ToBoolean

верно, если значение не равно нулю; в противном случае, false.

 public enum UnlPointValues
{
    Serial = 1,  //true
    Service = 0  //false
};

public static string GetUnloadingPointValues(bool values)
{
    string status = "";
    switch (values)
    {
        case (Convert.ToBoolean((int)UIHelper.UnlPointValues.Serial)):
        break;
        case (Convert.ToBoolean((int)UIHelper.UnlPointValues.Service)):
        break;
    }
}