问题标签 [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.
c# - C# 循环 - 中断与继续
在 C#(随意回答其他语言)循环中,break
和continue
作为离开循环结构并进入下一次迭代的手段有什么区别?
例子:
java - 为什么枚举不是可迭代的?
在 Java 5 及更高版本中,您有 foreach 循环,它可以神奇地适用于任何实现Iterable
:
但是,Enumerable
仍然没有实现Iterable
,这意味着要迭代Enumeration
你必须执行以下操作:
有谁知道是否有原因Enumeration
仍然没有实施Iterable
?
编辑:作为澄清,我不是在谈论enum的语言概念,而是在 Java API 中称为“ Enumeration ”的Java特定类。
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 对每种类型都有不同的加载命令。目前,我使用整数、双精度、字符串和枚举,因此代码必须根据类型进行自适应。
有谁知道如何做到这一点?还是我走错了方向?
java - 如何消除重复的枚举代码?
我有大量实现此接口的枚举:
一个典型的例子是:
可以想象,这些方法在 CodableEnum 的所有实现中几乎是相同的。我想消除这种重复,但坦率地说不知道如何。我尝试使用如下类:
但事实证明这毫无用处,因为:
- 枚举不能扩展类
- 枚举的元素(SKYPE、GOOGLE_TALK 等)不能扩展类
- 我无法提供 getByCode() 的默认实现,因为 DefaultCodableEnum 本身不是 Enum。我尝试更改 DefaultCodableEnum 以扩展 java.lang.Enum,但这似乎是不允许的。
有什么不依赖反思的建议吗?谢谢,唐
c# - 如何枚举一个枚举
你如何enum
在 C# 中枚举一个?
例如,以下代码无法编译:
它给出了以下编译时错误:
“西装”是一种“类型”,但用作“变量”
它在关键字上失败Suit
,第二个。
c# - 在 C++\CLI 中转换枚举的问题
我有一个用 C++\CLI 编写的程序集,它使用 .Net 提供的一些枚举。它有这样的性质:
它工作正常,但是当我从我的 C# 代码中使用这个程序集时,这个属性的类型是
我必须进行类型转换
问题很简单:为什么会这样,以及如何解决?
coding-style - 布尔值作为方法参数是不可接受的吗?
我的一位同事表示,布尔值作为方法参数是不可接受的。它们应由枚举代替。起初我没有看到任何好处,但他给了我一个例子。
什么更容易理解?
或者
现在我明白了!;-)
这绝对是一个示例,其中枚举作为第二个参数使代码更具可读性。
那么,您对这个话题有何看法?
c++ - 如何在 C++ 中将自定义项添加到系统菜单?
我需要枚举所有正在运行的应用程序。特别是所有顶部窗口。对于每个窗口,我都需要将自定义项添加到该窗口的系统菜单中。
我怎样才能在 C++ 中做到这一点?
更新。
我非常乐意为 Windows、MacOS 和 Ubuntu 提供解决方案(不过,我不确定 MacOS 和 Ubuntu 是否有“系统菜单”之类的东西)。
nhibernate - 您如何使用 NHibernate 将枚举映射到数据库和从数据库映射枚举?
编辑:瑞恩提出了一个很好的观点。我特别希望能够相互映射,同时仍将人类可读的值存储在数据库中。也就是说,我不希望我的数据库中有一堆枚举整数。