Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 枚举到整数。整数到枚举。最好的转换方式是什么?_C#_.net_Enums - Fatal编程技术网

C# 枚举到整数。整数到枚举。最好的转换方式是什么?

C# 枚举到整数。整数到枚举。最好的转换方式是什么?,c#,.net,enums,C#,.net,Enums,现在我想知道如何获取枚举的整数值并将整数值转换为枚举 意志 将dayNo的值更改为1 及 意志 将日期。星期二指定为可变日期 这是解析的最好方法吗?是的,它会的。但是你在发布之前试过吗?总之,你对枚举的理解是正确的 如果您觉得使用此方法更方便,可以使用从number/name转换为enum类型,但它在可读性或性能方面没有任何好处 奇怪的是,为了解析数字,您需要首先对它们调用ToString(),因为Enum.parse没有整数重载 从MSDN页面: Days day = (Day

现在我想知道如何获取枚举的整数值并将整数值转换为枚举

意志

将dayNo的值更改为1

意志

将日期。星期二指定为可变日期


这是解析的最好方法吗?

是的,它会的。但是你在发布之前试过吗?

总之,你对枚举的理解是正确的

如果您觉得使用此方法更方便,可以使用从number/name转换为enum类型,但它在可读性或性能方面没有任何好处

奇怪的是,为了解析数字,您需要首先对它们调用
ToString()
,因为
Enum.parse
没有整数重载

从MSDN页面:

        Days day = (Days) 2;
将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象。
是的,这很容易检查:

Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. 这将输出

Days d = (Days)3;
Console.WriteLine(d);

作为最佳实践,您的
enum
名称应为
Day
而不是
Days
;上面的变量
d
表示
而不是
。请参见MSDN上的。

是,它将完全执行以下操作:除了
Enum
应为
Enum

Wednesday
要使用Enum.Parse,必须提供一个字符串,因此如果要从int进行强制转换,必须通过一个难看的字符串

public enum Days
 {
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7
 }

。。。这两个都是星期三。

你不能亲自试一试吗?选角应该可以。顺便说一句,BCL中已经有了
DayOfWeek
enum:谢谢,我只是想知道除了解析时,是否还有其他方法可以执行上述操作。
enum.Parse
不会从
int
转换为相应的
enum
值。这个答案是错误的或充其量是误导性的。@Jason-根据文档,它确实转换为等效的枚举对象。有点像头发分割器,它将从int.Days x=(Days)Enum.parse(typeof(Days),“3”)的字符串代表进行解析;或Days y=(Days)Enum.Parse(typeof(Days),3.ToString());但不是int本身@Oded:但是没有具有类型为
int
的参数的
Enum.Parse
重载。
Wednesday
public enum Days
 {
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
    Sunday = 7
 }
Days x = (Days)Enum.Parse(typeof(Days), "3");
Days y = (Days)Enum.Parse(typeof(Days), 3.ToString());