枚举变量的值如何计算

枚举变量的值如何计算,第1张

枚举变量的值默认从0开始递增,当设置了某个成员的值时,后面的值在此基础上递增。所以

enum t{a, b, c=3, d, e=2,f};

那么a=0, b=1, c=3, d=4, e=2, f=3

但是这样设是没有矛盾的,因为有些值相同了,比如c和f,

所以定义enum t x = c;

x==c是对的,

x==f同样是对的。

所以设置时要取不同值

1 枚举类型定义的一般形式为:

enum 枚举名{ 枚举值表 };

在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。

例如:

该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。

2 枚举变量的说明

如同结构体(struct)和共用体(union)一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。

扩展资料:

ENUM其他含义:

ENUM是电话号码映射(E164 Number URI Mapping)的缩写。这个缩写的后面隐藏着一个伟大的创意:即通过最好和最廉价的路由途径,可以在世界任何地点使用同一个电话号码。可以象注册域名一样注册ENUM号码。

目前有许多注册机构和VOIP服务商免费提供这类服务。例如,如果来电方是传真机,可以将此规定到一个不同的路由途径上。ENUM不需要来电方必须使用电话机。另指C/C++程序语言中的一种数据类型。

参考资料来源:百度百科-ENUM

参考资料来源:百度百科-ENUM

int a=1;

Url u=(Url)a;

var a = typeof(Url)GetField(uToString())GetCustomAttributes(typeof(DescriptionAttribute), false)FirstOrDefault() as DescriptionAttribute;

var d = aDescription;

//d就是你想要的值

把枚举转换成int型就可以了 。 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。 枚举元素本身由系统定义了一个表示序号的数值

枚举(pascal)

随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。 在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称枚举类型。

type

daytype=(sun,mon,tue,wed,thu,fri,sat );

C#中的枚举

枚举类型是一种值类型,它用于声明一组命名的常数。

(1)枚举的声明:枚举声明用于声明新的枚举类型。

访问修辞符 enum 枚举名:基础类型

{

枚举成员

}

基 础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。

(2)枚举成员

枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。

示例:

public enum TimeofDay:uint

{

Morning=-3,

Afternoon=-2,

Evening=-1

}

产生编译时错误,原因是常数值 -1、-2 和 –3 不在基础整型 uint 的范围内。

(3)枚举成员默认值

在枚举类型中声明的第一个枚举成员它的默值为零。

以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加 1 得到的。这样增加后的值必须在该基础类型可表示的值的范围内;否则,会出现编译时错误。

示例:

public enum TimeofDay:uint

{

Morning,

Afternoon,

Evening

}

Morning的值为0,Afternoon的值为1,Evening的值为2。

(4)为枚举成员显示赋值

允许多个枚举成员有相同的值

没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1

示例

public enum Number

{

a=1,

b,

c=1,

d

}

b的值为2,d的值为2

注意:以上枚举值都不能超过它的基础类型范围。否则会报错

(5)枚举类型与基础类型的转换

基础类型不能隐式转换为枚举类型

枚举类型也不能隐式转换为基础类型

示例:

public enum Number

{

a,

b,

c,

d

}

class Test

{

public static void Main()

{

int i=Numbera;//错误,要强制类型转换(int)Numbera

Number n;

n=2 //错误,要强制类型转换(Number)2

}

}

(6)SystemEnum类型

SystemEnum 类型是所有枚举类型的抽象基类,并且从 SystemEnum 继承的成员在任何枚举类型中都可用。

SystemEnum 本身不是枚举类型。相反,它是一个类类型,所有枚举类型都是从它派生的。

SystemEnum 从类型 SystemValueType派生

(7)使用枚举类型

using System;

public enum TimeofDay

{

Morning,

Afternoon,

Evening

} class Test

{

static void WriteGreeting(TimeofDay timeofDay)

{

switch(timeofDay)

{

case TimeofDayMorning:

ConsoleWriteLine(good morning);

break;

case TimeofDayAfternoon:

ConsoleWriteLine(good afternoon);

break;

case TimeofDayEvening:

ConsoleWriteLine(good evening);

break;

}

}

static void Main()

{

WriteGreeting(TimeofDayMorning);

WriteGreeting(TimeofDayEvening);

WriteGreeting(TimeofDayAfternoon);

}

}

楼上的。。mysql里有这种类型,是一种字符串类数据列类型

ENUM('value1','value2',) 65535个成员 1或2字节

但是用的比较少。。。

你得写程序自己处理下,大概是下边这样

import javasqlConnection;

import javasqlDriverManager;

import javasqlResultSet;

import javasqlStatement;

public class EnumTesting {

Connection connection;

Statement statement;

public EnumTesting() {

try {

ClassforName("commysqljdbcDriver")newInstance();

connection = DriverManager

getConnection("jdbc:mysql://192168125/testuser=spider&password=spider");

} catch (Exception e) {

Systemerrprintln("Unable to find and load driver");

Systemexit(1);

}

}

public void doWork() {

try {

statement = connectioncreateStatement();

ResultSet rs = statement

executeQuery("SHOW COLUMNS FROM enumtest LIKE 'status'");

rsnext();

String enums = rsgetString("Type");

Systemoutprintln(enums);

int position = 0, count = 0;

String[] availableEnums = new String[10];

while ((position = enumsindexOf("'", position)) > 0) {

int secondPosition = enumsindexOf("'", position + 1);

availableEnums[count++] = enumssubstring(position + 1,

secondPosition);

position = secondPosition + 1;

Systemoutprintln(availableEnums[count - 1]);

}

rsclose();

statementclose();

connectionclose();

} catch (Exception e) {

eprintStackTrace();

}

}

public static void main(String[] args) {

Enum e = new Enum();

edoWork();

}

}

以上就是关于枚举变量的值如何计算全部的内容,包括:枚举变量的值如何计算、枚举类型enum用法、C# 根据数字值获取相应枚举等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9706650.html

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

发表评论

登录后才能评论

评论列表(0条)

保存