C# 自定义数据类型

C# 自定义数据类型,c#,.net,enums,types,C#,.net,Enums,Types,我想创建一些自定义数据类型,但我认为我问的问题不对 整个.NET中都使用复合布尔值,我想设计一些自己的值。 我一直在使用一系列布尔变量,它们是有效的,但只是不一样 NET中的示例包括: 颜色,黑色 对齐。居中 [fontProperties]。粗体* *我忘了真正的名字,但你明白了 我想做这样的东西: 颜色质量 没有一个 辨别颜色 区分不同的颜色 区分彩色图案 一旦宣布,我可以这样做: ifsearchOptions.ColorSortQualities==DiscriminationColor

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

整个.NET中都使用复合布尔值,我想设计一些自己的值。 我一直在使用一系列布尔变量,它们是有效的,但只是不一样

NET中的示例包括: 颜色,黑色 对齐。居中 [fontProperties]。粗体* *我忘了真正的名字,但你明白了

我想做这样的东西:

颜色质量

没有一个 辨别颜色 区分不同的颜色 区分彩色图案 一旦宣布,我可以这样做: ifsearchOptions.ColorSortQualities==DiscriminationColor [做事]

这叫什么


谢谢

我想您需要一个带有属性的枚举

[Flags]
enum ColorSortQualities
{
    None = 0x0,
    DistinguishColor = 0x1,
    DistinguishNumberOfColors = 0x2,
    DistinguishColorPattern = 0x4
}
这将允许调用方指定它们的任意组合,每个组合都将作为位标志实现。注意,这将允许32个选项,因为int是一个32位的量

您的条件代码如下所示:

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

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

我认为您需要一个带有该属性的枚举

[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
  };
使用枚举:

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

它被称为枚举,在C中使用关键字。

它被称为枚举,在C中使用关键字。

在我看来,不必要地显式声明枚举的类型为int32以外的类型是一个错误的举动。你想在静态类型上保存几个字节吗?事实上,我不知道这被认为是一种好的做法还是不好的做法,所以谢谢。在阅读了所有内容之后,再次感谢你。实际上CLR中的每个枚举都是默认的int32。显式声明否则,除非在边缘情况下重新调整枚举的用途,例如用于需要字节的api调用,否则只会增加噪声。我是根据我所看到的来衡量最佳实践的,仅此而已。在我看来,不必要地显式地将枚举的类型声明为int32以外的类型是一个糟糕的举动。你想在静态类型上保存几个字节吗?事实上,我不知道这被认为是一种好的做法还是不好的做法,所以谢谢。在阅读了所有内容之后,再次感谢你。实际上CLR中的每个枚举都是默认的int32。显式声明否则,除非在边缘情况下重新调整枚举的用途,例如用于需要字节的api调用,否则只会增加噪声。我是根据我所看到的来衡量最佳实践的,仅此而已。是否可能同时拥有“DifferenceColor”和“DifferenceColorPattern”,或者它们相互排斥?是否可能同时拥有“DifferenceColor”和“DifferenceColorPattern”,或者它们相互排斥?完美!正是我想要的。再次感谢您的完美!正是我想要的。再次感谢