Enum.GetValues的返回值类型是什么

Enum.GetValues的返回值类型是什么,第1张

这个是VS联机帮助里给的

下面的还有测试代码 没站

大概看了下 返回的好像都是 数组一类的  因为都可以用for或者foreach循环遍历

好像数组里的数据类型还是int

参考资料是 MSDN Online的

package comschoolstereotype; 

  活动枚举类型 

  @author QiXuanChen 

 /

public enum EventStatus { 

  / 

    未发布。 

   / 

  DRAFT("DRAFT", "未发布"), 

  / 

    已发布。 

   /

  PUBLISHED("PUBLISHED", "已发布"); 

  / 

    活动状态的值。 

   /

  private String value; 

  / 

    活动状态的中文描述。 

   /

  private String text; 

  / 

    @param status 活动状态的值 

    @param desc 活动状态的中文描述 

   /

  private EventStatus(String status, String desc) { 

    value = status; 

    text = desc; 

  } 

  / 

    @return 当前枚举对象的值。 

   /

  public String getValue() { 

    return value; 

  } 

  / 

    @return 当前状态的中文描述。 

   /

  public String getText() { 

    return text; 

  } 

  / 

    根据活动状态的值获取枚举对象。 

    

    @param status 活动状态的值 

    @return 枚举对象 

   /

  public static EventStatus getInstance(String status) { 

    EventStatus[] allStatus = EventStatusvalues(); 

    for (EventStatus ws : allStatus) { 

      if (wsgetValue()equalsIgnoreCase(status)) { 

        return ws; 

      } 

    } 

    throw new IllegalArgumentException("status值非法,没有符合课程状态的枚举对象"); 

  } 

}

package comljqtest;

/

枚举用法详解

@author jiqinlin

/

public class TestEnum {

/

普通枚举

@author jiqinlin

/

public enum ColorEnum {

red, green, yellow, blue;

}

/

枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法

@author jiqinlin

/

public enum SeasonEnum {

//注:枚举写在最前面,否则编译出错

spring, summer, autumn, winter;

private final static String position = "test";

public static SeasonEnum getSeason() {

if ("test"equals(position))

return spring;

else

return winter;

}

}

/

性别

实现带有构造器的枚举

@author jiqinlin

/

public enum Gender{

//通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错

//赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错

MAN("MAN"), WOMEN("WOMEN");

private final String value;

//构造器默认也只能是private, 从而保证构造函数只能在内部使用

Gender(String value) {

thisvalue = value;

}

public String getValue() {

return value;

}

}

/

订单状态

实现带有抽象方法的枚举

@author jiqinlin

/

public enum OrderState {

/ 已取消 /

CANCEL {public String getName(){return "已取消";}},

/ 待审核 /

WAITCONFIRM {public String getName(){return "待审核";}},

/ 等待付款 /

WAITPAYMENT {public String getName(){return "等待付款";}},

/ 正在配货 /

ADMEASUREPRODUCT {public String getName(){return "正在配货";}},

/ 等待发货 /

WAITDELIVER {public String getName(){return "等待发货";}},

/ 已发货 /

DELIVERED {public String getName(){return "已发货";}},

/ 已收货 /

RECEIVED {public String getName(){return "已收货";}};

public abstract String getName();

}

public static void main(String[] args) {

//枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名值”取得枚举中的值

ColorEnum colorEnum = ColorEnumblue;

switch (colorEnum) {

case red:

Systemoutprintln("color is red");

break;

case green:

Systemoutprintln("color is green");

break;

case yellow:

Systemoutprintln("color is yellow");

break;

case blue:

Systemoutprintln("color is blue");

break;

}

//遍历枚举

Systemoutprintln("遍历ColorEnum枚举中的值");

for(ColorEnum color : ColorEnumvalues()){

Systemoutprintln(color);

}

//获取枚举的个数

Systemoutprintln("ColorEnum枚举中的值有"+ColorEnumvalues()length+"个");

//获取枚举的索引位置,默认从0开始

Systemoutprintln(ColorEnumredordinal());//0

Systemoutprintln(ColorEnumgreenordinal());//1

Systemoutprintln(ColorEnumyellowordinal());//2

Systemoutprintln(ColorEnumblueordinal());//3

//枚举默认实现了javalangComparable接口

Systemoutprintln(ColorEnumredcompareTo(ColorEnumgreen));//-1

//--------------------------

Systemoutprintln("===========");

Systemerrprintln("季节为" + SeasonEnumgetSeason());

//--------------

Systemoutprintln("===========");

for(Gender gender : Gendervalues()){

Systemoutprintln(gendervalue);

}

//--------------

Systemoutprintln("===========");

for(OrderState order : OrderStatevalues()){

Systemoutprintln(ordergetName());

}

}

}

C/C++中枚举类型(enum)

如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔合中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。

在这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义! enum box{pencil,pen}; enum box box2;//或者简写成box box2;

再有一种就是在声明的时候同时定义。 enum {pencil,pen}box,box2; //在声明的同时进行定义!

枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值 *** 作! enum box{pencil=1,pen=2};

但是这里要特别注意的一点是,如果你不进行元素赋值 *** 作那么元素将会被系统自动从0开始自动递增的进行赋值 *** 作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1 *** 作,例如 enum box{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值 *** 作!

C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例:enum FileAccess {

Read = 0x1,

Write = 0x2,

};FileAccess access = ::Read; // 正确

FileAccess access = FileAccess::Read; // 错误C++枚举的这个特点对于习惯面向对象和作用域概念的人来说是不可接受的。首先,FileAccess::Read 显然更加符合程序员的直觉,因为上面的枚举定义理应等价于如下的定义(实际上,NET 中的枚举类型便是如此实现的):class FileAccess {

static const int Read = 0x1;

static const int Write = 0x2;

};其次,这导致我们无法在同一个作用域中定义两个同样名称的枚举值。也就是说,以下的代码是编译错误:enum FileAccess {

Read = 0x1,

Write = 0x2,

};enum FileShare {

Read = 0x1, // 重定义

Write = 0x2, // 重定义

};如果这一点没有让你恼怒过的话,你可能还没写过多少 C++ 代码 :-)。实际上,在最新的 C++0x 标准草案中有关于枚举作用域问题的提案,但最终的解决方案会是怎样的就无法未卜先知了,毕竟对于象 C++ 这样使用广泛的语言来说,任何特性的增删和修改都必须十分小心谨慎。当然,我们可以使用一些迂回的方法来解决这个问题(C++ 总是能给我们很多惊喜和意外)。例如,我们可以把枚举值放在一个结构里,并使用运算符重载来逼近枚举的特性:struct FileAccess {

enum __Enum {

Read = 0x1,

Write = 0x2

};

__Enum _value; // 枚举值 FileAccess(int value = 0) : _value((__Enum)value) {}

FileAccess& operator=(int value) {

this->_value = (__Enum)value;

return this;

}

operator int() const {

return this->_value;

}

};我们现在可以按照希望的方式使用这个枚举类型:FileAccess access = FileAccess::Read;并且,因为我们提供了到 int 类型的转换运算符,因此在需要 int 的地方都可以使用它,例如 switch 语句:switch (access) {

case FileAccess::Read:

break;

case FileAccess::Write:

break;

}当然我们不愿意每次都手工编写这样的结构。通过使用宏,我们可以很容易做到这一点:#define DECLARE_ENUM(E) \

struct E \

{ \

public: \

E(int value = 0) : _value((__Enum)value) { \

} \

E& operator=(int value) { \

this->_value = (__Enum)value; \

return this; \

} \

operator int() const { \

return this->_value; \

} \

\

enum __Enum {#define END_ENUM() \

}; \

\

private: \

__Enum _value; \

};我们现在可以按如下的方式定义前面的枚举,并且不比直接写 enum 复杂多少。DECLARE_ENUM(FileAccess)

Read = 0x1,

Write = 0x2,

END_ENUM()DECLARE_ENUM(FileShare)

Read = 0x1,

Write = 0x2,

END_ENUM()

单元:TypInfo

函数:function GetEnumName(TypeInfo: PTypeInfo; Value:Integer):string;

说明:

Returns the name of a Delphi enumerated type constant given its value

Use GetEnumName to convert a Delphi enumerated value into the symbolic name that represents it in code

TypeInfo is the type information record that describes the enumerated type You can obtain the type information for a type by calling the TypeInfo function in Delphi or the __delphirtti operator in C++

Value is the enumerated value, represented as an integer

GetEnumName returns the string that represents the specified value

示例:

列举枚举类型DBTUpdateAction的第一个枚举项的名称。

var

Info: PTypeInfo;

name: string;

begin

Info := SystemTypeInfo(DBTUpdateAction);

name := TypInfoGetEnumName(Info, Ord(0));

end;

在SQL中,枚举值是指一组有限的值,它们可以用来查询数据库中的特定数据。例如,如果您想要查询某个国家的所有城市,您可以使用枚举值来查询该国家的所有城市。您可以使用SELECT语句来查询枚举值,该语句的语法如下:SELECT FROM table_name WHERE column_name IN (value1, value2, value3, );其中,table_name是您要查询的表名,column_name是您要查询的列名,value1、value2、value3等是您要查询的枚举值。例如,如果您想要查询某个国家的所有城市,您可以使用以下SELECT语句:SELECT FROM cities WHERE country IN ('China', 'India', 'USA');这样,您就可以查询到指定国家的所有城市。

以上就是关于Enum.GetValues的返回值类型是什么全部的内容,包括:Enum.GetValues的返回值类型是什么、用java写一个枚举类程序、java枚举问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9563582.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存