Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在设计时获取枚举的数值?_C#_Enums - Fatal编程技术网

C# 在设计时获取枚举的数值?

C# 在设计时获取枚举的数值?,c#,enums,C#,Enums,我的一位同事今天问我,是否有可能在设计时获得枚举的值。我指出,在运行时使用cast和即时窗口很容易做到这一点 显然,在VB6中,可以使用快速信息来实现这一点,但在设计时,有没有一种方法可以在C#中实现这一点 enum很大,它的值以int形式存储在数据库中。如果我们怀疑数据库中的值不再与enum同步(可能是因为有人编辑了enum),我们就有一个错误,我们需要知道数据库中的值实际指的是什么。如果没有给出明确的值,枚举成员从0开始,递增1。您可以使用它来确定枚举的数值 例如: enum Days {

我的一位同事今天问我,是否有可能在设计时获得枚举的值。我指出,在运行时使用cast和即时窗口很容易做到这一点

显然,在VB6中,可以使用快速信息来实现这一点,但在设计时,有没有一种方法可以在C#中实现这一点


enum很大,它的值以int形式存储在数据库中。如果我们怀疑数据库中的值不再与enum同步(可能是因为有人编辑了enum),我们就有一个错误,我们需要知道数据库中的值实际指的是什么。

如果没有给出明确的值,枚举成员从0开始,递增1。您可以使用它来确定枚举的数值

例如:

enum Days
{
Sunday,
Monday,
Tuesday,
}

在上面的例子中,Sunday=0,Sunday=1,等等……

为什么不编写一个小程序来获取您的枚举并迭代枚举的所有领域以打印出类似“EnumEntry=EnumValue”的内容呢。您可以获得枚举中所有字段的显式描述,并可以进行进一步的设计时分析

Array values = Enum.GetValues(typeof(myEnum));

foreach( MyEnum val in values )
{
   Console.WriteLine (String.Format("{0}: {1}", Enum.GetName(typeof(MyEnum), val), val);
}

从这里开始:

如果您有一个包含枚举的数据库表,并且希望将其与c#中的枚举对齐,我建议您执行以下操作:

enum Whatever
{

  Value1 = 1, 
  Value2 = 2, 
  Value3 = 3
}
这样做,您将主键(可能是自动递增的)与枚举对齐,并且它可能不会更改。如果有人出现并希望添加一些随机枚举值,则不会影响现有的枚举值。

是的,在c#中也可以这样做,如果不明确定义值,则从0开始分配值,但也可以分配值

enum Days
{
Sunday=10,
Monday=20,
Tuesday=30,
}
你可以得到价值

console.WriteLine((int)Days.Sunday); //print 10
console.WriteLine(Days.Sunday); //print Sunday

我猜您希望直接在调试器中看到
enum
整数值,而不是它们的名称

可以使用(请注意,原始对象可视化必须处于禁用状态)来实现这一点。只需按照以下方式装饰您的
enum
声明:

[DebuggerDisplay("{ToString()} ({ToString(\"d\")})")]
enum MyEnumToDebug
{
}

当您将类型为
MyEnumToDebug
的变量悬停在调试器中时,您将看到名称和整数值。

您可以在设计时使用即时窗口,除非它是Web应用程序和其他少数变量。下面的内容:String.Format(“{0:D}”,enumValue)

因此,如果您需要IDE功能,请提供您可以搜索VS加载项的版本。默认情况下没有这样的功能。没有答案,但如果您依赖于枚举的整数值,那么现在是您开始手动输入这些值的时候了。这是事实,但当枚举中的值超过15时,这就有点不正确了。我希望在设计时获得这些值。