#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;
}
}