Программа тестирования (.NET 2.0):
[Flags]
enum MyEnum
{
Member1 = 1,
Member2 = 2,
}
class Program
{
// Inspecting r shows "Member1 | Member2"
MyEnum r = MyEnum.Member1 | MyEnum.Member2;
// s = "Member1, Member2"
string s = r.ToString();
}
Я бы ожидал, что .ToString()
вернет строку с членами, разделенными на канал, но это не так.
Информация о бонусе: вызов Enum.Parse()
в строке с разделителями-запятыми преуспевает, а при передаче строки с разделяемой колонкой происходит сбой.
Отладчик VS использует визуализаторы для отображения значений. Только если нет визуализатора для определенного типа данных, он будет возвращаться к методу .ToString().
Дополнительная информация о визуализаторах:
Реализация по умолчанию ToString
для перечисления, отмеченного FlagsAttribute
, представляет собой список, разделенный запятыми. Тем не менее, это не обязательно результат ToString
, который показан в отладчике - должен быть установлен визуализатор отладчика для перечислений, который отображает значения с побитовым символом или каналом OR
.