C# 关于string值转枚举值!搞不懂啊!达人详细解释下!

来源:百度知道 编辑:UC知道 时间:2024/06/04 19:40:30
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication12
{
enum orientation :byte
{ north=1,south=2,eart=3,west=4 }
class Program
{
static void Main(string[] args)
{
string good = "north";
orientation show = (orientation)Enum.Parse(typeof(orientation), good,true);

Console.WriteLine(show);
Console.ReadKey();
}
}
}
这个转换到底有什么用啊?用在哪?
1楼朋友,我是出学者,还没有用到你说的那些,可以通俗点讲吗?

这段代码应该就是一个例子,专门用来演示字符串到枚举的转换的。

A用枚举的目的:
1 跟用常量一样,不必记忆具体的数字,直接用类似常量的方法代替。降低记忆难度。如果要修改数值,直接改枚举即可,不必每个地方都修改。
2 方便switch case,你按下tab只能感知能方便的生成相关case
3 可以归类,比如上文的orientation,有四个数值,键入orientation后按下'.'会自动提示所有成员。方便很多。比如大量的 or 操作填写参数的时候
4 与别人共享代码的时候,枚举跟常量一样很有用。
5 枚举.toString()能方便的输出文字...有时候是很方便。(个人习惯)
5 其他....

B 为什么会有字符串转到枚举这种情况的?
1 可能来源是文件,或者其他有格式输入的地方,他们不支持直接的枚举,因此就转换成“万能的字符串”了
2 序列化反序列化的时候,有时候枚举是靠不住的,因此为了防止枚举不同步,用字符串存储然后在转换成本地的枚举。
3 类似2,在有可能混淆器的时候,要小心不要直接用枚举。除非你没有用到过toString

C 枚举很常用么?
1 我个人几乎每个程序都要用到,很多枚举。很多常量。

D 枚举转字符串跟字符串转枚举很常用么?
1 前者要看个人习惯。后者很不常用。

总结,枚举是个好东西,大胆的用吧!
凡是遇到代码中出现数字的地方都用常量!不然代码中直接写数字会被人鄙视
凡是遇到需要归类的、可以归纳总结的一堆常量,就把他们集合成一个枚举,结构上能更好的让人看懂。显得专业。
不要害怕有大量的常量跟枚举需要管理,总比你逐个在代码中找数字强!到手看到一个0 1 2 要想半天它到底代表啥!

Enum.Parse()用来把一个字符串字面值转换为枚举值,如果枚举中不包含名为此字符串的成员的话会出错

回答补充:
Enum.Parse返回的是一个Object,这个Object是不能显示当作orientation 枚举来用的,必须强制转换,实际上返回的那个