Почему в булевом типе есть два поля с одинаковым значением?
internal const int True = 1;
internal const int False = 0;
internal const string TrueLiteral = "True";
internal const string FalseLiteral = "False";
и
public static readonly string TrueString;
public static readonly string FalseString;
static Boolean()
{
TrueString = "True";
FalseString = "False";
}
в коде, сгенерированном рефлектором, методы не используют эти строки, но:
public string ToString(IFormatProvider provider)
{
if (!this)
{
return "False";
}
return "True";
}
не лучше ли использовать эти постоянные значения?
РЕДАКТИРОВАТЬ: в CIL нет никакой разницы между использованием строк const и строк экземпляров.
Так, когда я объявляю приватную строку const = "a", где бы в приложении не использовалось слово "a", Jitter использует значение const или это только в области действия строки const?