自定义数据类型

自定义数据类型

问题描述:

我想创建一些自定义数据类型,但我不认为我在问正确的问题。自定义数据类型

在整个.NET中都使用了“复合布尔”值,我想设计一些我自己的。 我一直在使用一系列的布尔变量,它的工作原理,但只是不一样。

从.NET的例子包括: Color.Black Alignment.Centered [fontProperties] .Bold * *我忘记了实际的名字,但你的想法

我想要是这样的:

ColorSortQualities

  • DistinguishColor
  • DistinguishNumberOfColors
  • DistinguishColorPattern

一旦这样被宣布,我可以这样做:如果 (searchOptions.ColorSortQualities == DistinguishColor) [做的东西]

这是什么叫什么?

谢谢!

+1

是否有可能同时具有'DistinguishColor'和'DistinguishColorPattern',还是它们是互斥的? – 2010-04-10 19:37:29

这就是所谓的枚举,并在C#中使用关键字。

+0

完美!正是我在找什么。再次感谢 – 2010-04-10 19:41:25

我想你想要一个枚举与[Flags]属性。

[Flags] 
enum ColorSortQualities 
{ 
    None = 0x0, 
    DistinguishColor = 0x1, 
    DistinguishNumberOfColors = 0x2, 
    DistinguishColorPattern = 0x4 
} 

这将让调用者指定这些的任意组合,每个组合将被实现为位标志。请注意,这将允许32个选项,因为int是一个32位的数量。

你的状态代码是这样:

if((searchOptions & ColorSortQualities.DistinguishColor) == ColorSortQualities.DistinguishColor) 

如果这不是你所说的“一系列布尔变量”的意思是,请澄清。

使用枚举:

enum ColorSortQualities 
    { 
     None, 
     DistinguishColor, 
     DistinguishNumberOfColors, 
     DistinguishColorPattern 
    }; 
+1

在我看来,不明确地声明枚举的类型与int32不同,这是不好的举动。你是否试图在静态类型上保存几个字节? – 2010-04-10 19:30:46

+0

好吧,其实我不知道它是否被认为是好的或坏的做法,所以谢谢。 – n535 2010-04-10 19:32:12

+0

阅读http://stackoverflow.com/questions/746812/best-practices-for-using-and-persisting-enums后,事情似乎很清楚,再次感谢你。 – n535 2010-04-10 19:39:10