Как создать строку типа «Вы сделали это!». появляются из булевского прохода/сбой вместо «True» или «False»? Я только когда-либо могу найти метод ToString, но все, что делает, это изменение «Истина» на «Истина». Я хочу знать, как заставить строку выводить все, что я хочу.String from Boolean
ответ
A bool
- это тип, так же, как и string
. Вы никогда не сможете получить тип bool, чтобы показать «Вы сделали это!», Потому что его bool - это может быть только true или false.
Вы хотите создать строку на основе результата булева. Похоже, вы хотите if
заявление:
string myString;
if(myBool) // if true
{
myString = "You did it!";
}
else
{
myString = "You didn't do it";
}
как показал @juharr, есть способы, чтобы сделать это в менее строк кода, но это логика, которая должна произойти.
В качестве примечания, вы видите, метод ToString
на bool
, потому что каждый тип наследования от System.Object
наследует метод ToString
, предоставляя вам строковое представление этого объекта. Это неприменимо для того, чего вы хотите достичь здесь.
Также стоит отметить, что стандартная реализация 'ToString()' по умолчанию - это полное имя типа, если только тип не переопределил реализацию. – Tim
Чтобы отобразить строку в вашей точки зрения при использовании привязки вы можете использовать пользовательские IValueConverter данные:
public class BoolToStringConverter : IValueConverter
{
public string TrueString { get; set; }
public string FalseString { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var boolValue = (bool)value;
return boolValue ? TrueString : FalseString;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
XAML:
<stackOverflow:BoolToStringConverter x:Key="BoolToStringConverter" TrueString="You did it!" FalseString="You didn't do it"/>
<TextBlock Text="{Binding WasItDone, Converter={StaticResource BoolToStringConverter}}"/>
Я думаю, что создание Extension Method
тем ближе вы можете получить от чего вы хотите.
Создать BoolExtensions
класс:
public static class BoolExtensions
{
public static string ToString(this bool boolean, string valueIfTrue, string valueIfFalse)
{
return boolean ? valueIfTrue : valueIfFalse;
}
}
Тогда вы можете сделать это:
static void Main(string[] args)
{
var trueBoolean = true;
Console.WriteLine(trueBoolean.ToString("You did it!", "You didn't do it"));
var falseBoolean = false;
Console.WriteLine(falseBoolean.ToString("You did it!", "You didn't do it"));
Console.ReadKey();
}
Обратите внимание, что оба BoolExtensions
класса, и это ToString
метод помечаются как static
Вы не можете переопределить метод ToString известного типа в C#, но вы можете создавать методы расширения, если вы будете использовать это Строка во многих частях кода вы можете создать метод для этого, как:
public static class Extensions
{
public static string ToStringCustom(this bool booleanValue)
{
if(booleanValue)
return "You did it";
else
return "You didn't do id";
}
}
, а затем при использовании логических переменных этот метод будет доступен для вас, как:
Console.WriteLine(true.ToStringCustom())
отпечатывается "Ты сделал это".
Если вы используете C# 3.0 или выше, вы также можете поместить это в extension method для BOOL так:
public static string ToDidItOrNotString(this bool b)
{
return b ? "You did it!" : "You did not do it.";
}
Тогда вы можете просто назвать это так:
string s = boolVal.ToDidItOrNotString();
Если это не было необходимо во многих частях приложения, я бы не создал для него метод расширения. Это поразило бы меня как избыток. YMMV. – Tim
Если вы хотите использовать эту функцию в в нескольких местах вы можете создать метод расширения, например;
public static string YouDidIt(this bool value)
{
if (value) return "You did it!";
return "You failed";
}
Тогда вы можете использовать его как;
bool a = true;
string s = a.YouDidIt();
- 1. Изменить Boolean from String на флажок (JTable)
- 2. NullPointerException from Boolean
- 3. Sub string from String
- 4. String boolean confusion
- 5. convert string to boolean
- 6. GCM string вместо boolean
- 7. string as boolean
- 8. Make-shift string boolean?
- 9. Python String Boolean Сравнение
- 10. String to Boolean
- 11. Javascript String to Boolean
- 12. DataContractJsonSerializer parse boolean string
- 13. String Boolean in Bash
- 14. running boolean method from main
- 15. boolean values from php integer
- 16. Boolean from cookie in Twig
- 17. C# string vs String, bool vs Boolean
- 18. If Statement with JSON Data from boolean
- 19. AJAX get boolean from asp.net webmethod
- 20. getResource возвращает boolean вместо String []
- 21. JSP: String to Boolean conversion
- 22. Boolean to String в Java
- 23. C++ std :: string to boolean
- 24. MyBatis: Map String to boolean
- 25. ArrayList.add return String вместо boolean
- 26. String from Date works, Date from String не работает
- 27. pass boolean from handler to function
- 28. Scala Filter Chars from String
- 29. String from 2 Strings
- 30. ShortcutKey from string
Я не совсем уверен, но вы хотите что-то вроде 'string s = boolValue? «Это правда»: «Это ложь», '? – juharr
Почему вы не используете простой оператор IF. Если он вернет «True», то покажет одну фразу, false получит другую. Похоже, Джонсополис избил меня до ответа. – logixologist
Я просто хотел сказать AdmiralCuddles спасибо за сообщение хорошего вопроса уровня начинающего. Многие новые пользователи жалуются на то, что они проголосовали за вопросы более низкого уровня, но ответ на этот вопрос показывает, что реальная проблема заключается в том, что они задают плохие вопросы. Продолжайте и приветствуйте Stack Overflow! –