Я знаю причину, по которой он уже решен, но когда дело доходит до «пользовательского» логического форматирования, у меня есть два метода расширения, без которых я больше не могу жить :-)
public static class BoolExtensions
{
public static string ToString(this bool? v, string trueString, string falseString, string nullString="Undefined") {
return v == null ? nullString : v.Value ? trueString : falseString;
}
public static string ToString(this bool v, string trueString, string falseString) {
return ToString(v, trueString, falseString, null);
}
}
Использование тривиально. Следующее преобразует различные значения bool в их португальские представления:
string verdadeiro = true.ToString("verdadeiro", "falso");
string falso = false.ToString("verdadeiro", "falso");
bool? v = null;
string nulo = v.ToString("verdadeiro", "falso", "nulo");