问题标签 [enumeration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
16 回答
797579 浏览

c# - C# 循环 - 中断与继续

在 C#(随意回答其他语言)循环中,breakcontinue作为离开循环结构并进入下一次迭代的手段有什么区别?

例子:

0 投票
5 回答
20695 浏览

java - 为什么枚举不是可迭代的?

在 Java 5 及更高版本中,您有 foreach 循环,它可以神奇地适用于任何实现Iterable

但是,Enumerable仍然没有实现Iterable,这意味着要迭代Enumeration你必须执行以下操作:

有谁知道是否有原因Enumeration仍然没有实施Iterable

编辑:作为澄清,我不是在谈论enum的语言概念,而是在 Java API 中称为“ Enumeration ”的Java特定类。

0 投票
2 回答
3649 浏览

c# - PropertyGrid、DefaultValueAttribute、动态对象和枚举

注意:我使用的是 .Net 1.1,尽管我并不完全反对使用更高版本的答案。

我在 PropertyGrid 中显示一些动态生成的对象。这些对象具有数字、文本和枚举属性。目前我在设置枚举的默认值时遇到问题,因此它们在列表中并不总是显示为粗体。枚举本身也是动态生成的,并且除了默认值之外似乎工作正常。

首先,我想展示在导致错误的情况下如何生成枚举。第一行使用自定义类来查询数据库。只需将此行替换为 DataAdapter 或使用数据库值填充 DataSet 的首选方法。我正在使用第 1 列中的字符串值来创建我的枚举。

现在了解如何创建类型。这主要基于此处提供的示例代码。本质上,将 pFeature 视为数据库行。我们遍历列,使用列名作为新的属性名,使用列值作为默认值;至少这是目标。

最后,我们使用该类型创建它的实例并加载默认值,以便稍后使用 PropertiesGrid 显示它。

但是,当我们尝试获取枚举的默认值时,这会导致错误。DefaultValueAttribute dva 未设置,因此当我们尝试使用它时会导致异常。

如果我们更改此代码段:

对此:

获取 DefaultValueAttribute dva 没有问题;但是,该字段随后在 PropertiesGrid 中以粗体显示,因为它与默认值不匹配。

当我将默认值设置为生成的枚举时,任何人都可以弄清楚为什么我无法获得 DefaultValueAttribute 吗?正如你可能猜到的,我对 Reflection 还是新手,所以这对我来说都是全新的。

谢谢。

更新:作为对 alabamasucks.blogspot 的回应,使用 ShouldSerialize 肯定会解决我的问题。我能够使用普通类创建方法;但是,我不确定如何为生成的类型执行此操作。据我所知,我需要使用 MethodBuilder 并生成 IL 来检查该字段是否等于默认值。听起来很简单。我想在 IL 代码中表示这一点:

我能够使用 ildasm.exe 从类似的代码中获取 IL 代码,但我有几个问题。如何在 IL 代码中使用 val 变量?在我的示例中,我使用了一个值为 0 的 int。

这肯定会变得很棘手,因为 IL 对每种类型都有不同的加载命令。目前,我使用整数、双精度、字符串和枚举,因此代码必须根据类型进行自适应。

有谁知道如何做到这一点?还是我走错了方向?

0 投票
15 回答
8513 浏览

java - 如何消除重复的枚举代码?

我有大量实现此接口的枚举:

一个典型的例子是:

可以想象,这些方法在 CodableEnum 的所有实现中几乎是相同的。我想消除这种重复,但坦率地说不知道如何。我尝试使用如下类:

但事实证明这毫无用处,因为:

  1. 枚举不能扩展类
  2. 枚举的元素(SKYPE、GOOGLE_TALK 等)不能扩展类
  3. 我无法提供 getByCode() 的默认实现,因为 DefaultCodableEnum 本身不是 Enum。我尝试更改 DefaultCodableEnum 以扩展 java.lang.Enum,但这似乎是不允许的。

有什么不依赖反思的建议吗?谢谢,唐

0 投票
33 回答
912996 浏览

c# - 如何枚举一个枚举

你如何enum在 C# 中枚举一个?

例如,以下代码无法编译:

它给出了以下编译时错误:

“西装”是一种“类型”,但用作“变量”

它在关键字上失败Suit,第二个。

0 投票
2 回答
855 浏览

c# - 在 C++\CLI 中转换枚举的问题

我有一个用 C++\CLI 编写的程序集,它使用 .Net 提供的一些枚举。它有这样的性质:

它工作正常,但是当我从我的 C# 代码中使用这个程序集时,这个属性的类型是

我必须进行类型转换

问题很简单:为什么会这样,以及如何解决?

0 投票
26 回答
8226 浏览

coding-style - 布尔值作为方法参数是不可接受的吗?

我的一位同事表示,布尔值作为方法参数是不可接受的。它们应由枚举代替。起初我没有看到任何好处,但他给了我一个例子。

什么更容易理解?

或者

现在我明白了!;-)
这绝对是一个示例,其中枚举作为第二个参数使代码更具可读性。

那么,您对这个话题有何看法?

0 投票
4 回答
2764 浏览

c++ - 如何在 C++ 中将自定义项添加到系统菜单?

我需要枚举所有正在运行的应用程序。特别是所有顶部窗口。对于每个窗口,我都需要将自定义项添加到该窗口的系统菜单中。

我怎样才能在 C++ 中做到这一点?

更新。

我非常乐意为 Windows、MacOS 和 Ubuntu 提供解决方案(不过,我不确定 MacOS 和 Ubuntu 是否有“系统菜单”之类的东西)。

0 投票
9 回答
18525 浏览

c# - 有没有办法遍历所有枚举值?

可能重复:
C#:如何枚举枚举?

主题说明了一切。我想用它在组合框中添加枚举的值。

谢谢

冰山

0 投票
4 回答
2674 浏览

nhibernate - 您如何使用 NHibernate 将枚举映射到数据库和从数据库映射枚举?

编辑:瑞恩提出了一个很好的观点。我特别希望能够相互映射,同时仍将人类可读的值存储在数据库中。也就是说,我不希望我的数据库中有一堆枚举整数。