【发布时间】:2015-09-27 16:13:22
【问题描述】:
这是来自 .NET 4 的 RotateFlipType 枚举的声明:
public enum RotateFlipType
{
Rotate180FlipXY = 0,
RotateNoneFlipNone = 0,
Rotate270FlipXY = 1,
Rotate90FlipNone = 1,
Rotate180FlipNone = 2,
RotateNoneFlipXY = 2,
Rotate270FlipNone = 3,
Rotate90FlipXY = 3,
Rotate180FlipY = 4,
RotateNoneFlipX = 4,
Rotate90FlipX = 5,
Rotate270FlipY = 5,
RotateNoneFlipY = 6,
Rotate180FlipX = 6,
Rotate90FlipY = 7,
Rotate270FlipX = 7,
}
我了解这些值是如何配对在一起的,否则会产生相同的结果。当将调试器值与RotateFlipType.ToString 值进行比较时,上述枚举变得不友好。也不适合数据绑定场景。例如:
var value = RotateFlipType.RotateNoneFlipNone; // Debugger shows correct string for [value] which is [RotateNoneFlipNone].
var text = value.ToString(); // Output of [text] is [Rotate180FlipXY]. Presumably because it is declared first in the list.
这与操作的顺序有关吗?难道他们没有使用[Flags] 或者将枚举分成两部分(分离旋转和翻转)?
【问题讨论】: