草庐IT

c# - Java 枚举与 C# 枚举 - 缺少的功能

在Java中,我可以很容易地用附加数据描述一个枚举。我可以这样描述它publicenumOperatorType{GreaterOrEqual(">=","GreaterOrEqual"),Greater(">","Greater"),Less("然后添加一个迭代values()的静态方法,将所有数据添加到HashMap中,并允许通过其属性之一作为键从图中检索完整的枚举数据。简而言之,枚举是java中非常发达的类型。现在,转向C#,我有哪些选择?我想保存一个枚举及其属性,将其加载到map,并在需要时按键检索。我有什么可以帮助的吗(例如,每个枚举的单调-这不是一个好主意)。谢谢。

Java泛型的泛型

我有一个代表文本片段的通用类。该文本片段可能具有多种不同模式(不同类型的突出显示)中的任何一种。这些模式由枚举表示。每个项目的Enum可能不同,但它必须实现一个接口(interface),该接口(interface)提供一种组合其中2个的方法(可以突出显示和加粗)。所以我有一个界面:publicinterfaceTextFragmentMode>{/***Willcombinethesuppliedmodewiththecurrentmodeandreturnthe*result.**@parammodeThemodetocombinewith.*@returnThecombinedm

c++ - 为什么我在 C++ 中得到 "error: expected ' }'"但在 C 中却没有?

当我在以下C++源代码中编译时,我得到了"error:expected'}'"'^'指向的地方:typedefenum{false,true}Boolean;^当我将其编译为C源代码时,我没有收到此错误。这是什么原因?我很难过! 最佳答案 false和true是C++关键字,因此您不能将它们用作enum标识符。在C中,它们不是关键字,因此您的代码可以工作,但如果您包含那么它将无法编译,因为该header定义了false和true作为宏。请注意,您可能不应该自己实现boolean类型。C++已经有了bool类型,如果您使用的是C99编

c++ - 控制到达非空函数未定义行为的结尾

对于这段代码:enumclassColors{Red,Green,Blue};intfun(Colorscolor){switch(color){caseColors::Red:return0;caseColors::Blue:return1;caseColors::Green:return2;}}我的编译器向我抛出这个错误:warning:controlreachesendofnon-voidfunction[-Wreturn-type]我知道函数中没有返回语句是未定义行为,但是所有控制路径都没有返回语句是未定义行为吗?提前致谢。 最佳答案

C++ Bitflaged枚举到字符串

当您将鼠标悬停在按位枚举(或它的名称)变量(调试时)上时,我正在尝试通过采用枚举并将其转换为字符串来执行Intellisense在vi​​sualstudio中所做的事情。例如:#includeenumColor{White=0x0000,Red=0x0001,Green=0x0002,Blue=0x0004,};intmain(){Coloryellow=Color(Green|Blue);std::cout如果将鼠标悬停在黄色上,您将看到:所以我希望能够调用类似的东西:std::cout并打印输出:Green|蓝色。我写了以下内容,试图提供一种打印枚举的通用方法:#include#

c++ - 在模板类中时枚举中的整数溢出

深入研究模板元编程,我发现C++中枚举范围的奇怪行为。我收到一个警告:表达式中整数溢出,看起来我实际上并不想要一个超出枚举范围的值。这是代码:#include#includetemplateclasspow{public:enum{result=2*pow::result};};templateclasspow{public:enum{result=1};};enumtest{one,max=4294967295};enumtest_2{last=4294967295*2};intmain(){std::cout:\t"::result:\t"::result:\t"::result:

C++:值的名称可能有链接

摘自cppreference.com:Anamethatdenotesobject,reference,function,type,template,namespace,orvalue,mayhavelinkage.什么是“值的名称”?谁能提供一个值的名称不是对象名称的示例? 最佳答案 一个接近于此的例子是enum的值,尽管从技术上讲它们是namedconstants:enumclassexample{ONE=1,TWO}在这种情况下,枚举example的名称是值,其中ONE对应1,TWO对应2。这些不仅仅是变量,因为您不能为它们赋

c++ - 是否可以确定类型是否为范围枚举类型?

是否有类型特征,或者是否可以编写类型特征is_scoped_enum这样:如果T是范围枚举,is_scoped_enum::value是true和如果T是任何其他类型,is_scoped_enum::value是假的 最佳答案 我认为测试它是否是枚举并且不能隐式转换为基础类型应该可以解决问题。template::value>structis_scoped_enum:std::false_type{};templatestructis_scoped_enum:std::integral_constant::type>::value>{

同一接口(interface)的多个版本的 C++ 设计(头文件中的枚举/结构)

我们正在与一个外部控制的程序连接,该程序具有定义的包含枚举和结构的header。我们希望能够以尽可能少的重复代码与该程序的多个版本进行交互。每个版本都有相同的通用枚举和结构,但随着时间的推移会略有修改。在理想的设置中,我们可以有条件地包含同一header的不同版本(即,如果与版本1接口(interface)#include“version1\progDefs.h”,否则#include“version2\progDefs.h”),但不要相信这在C++中是可能的。下面是一个简单的例子来说明问题和我们目前正在做的事情。感谢您的帮助。version1\progDefs.h包含enumitem

c++ - 无法将枚举类型创建为原子

#include#includeusingnamespacestd;typedefenumday{sun=0,mon,tue}day;intmain(){atomica(sun);cout上面的代码尝试创建一个原子类型的枚举变量。但是我收到以下错误。undefinedreferencetostd::atomic::operatorday()constatomic不支持枚举类型吗?或者我的语法有什么错误吗?我正在使用在32位ubuntu12.0.4机器上运行的g++编译器。谢谢。 最佳答案 我使用支持C++11和C++14的在线编译器