swith怎么用枚举来代替 最近做一个项目,本来是传进来一个string的参数,用switch去判断然后做不同的操作,但要求我们不要用字符串去case。我想问一下,怎么定义一个枚举去代替,把传进来的string参数转换为枚举? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 enum SomeType{ Type1, Type2, Type3};void foo(SomeType type){ switch (type) { SomeType.Type1: ...; break; SomeType.Type2: ...; break; SomeType.Type3: ...; break; }} 那用枚举就多此一举了。实在要写这么写:void foo(string type){ string[] a = { "type1", "type2", "type3" }; SomeType[] b = { SomeType.Type1, SomeType.Type2, SomeType.Type3 }; var query = a.Zip(b, (x, y) => new { x, y }).SingleOrDefault(x => x.x == type); if (query == null) //不是正确的类型 return; SomeType yourType = query.y; switch (yourType) { ... }} 里面不知道这个枚举,当然就不能用这个枚举了,不知道你不用string的目的是什么 用Enum.Parse把字符串转换成枚举,当然前提是枚举值要和传入的字符串相同。 这种需求不太合理了,使用枚举代替字符串就是为了限定有效值的范围,但是又不知道枚举的类型,还有一种办法就是参数还是字符串,但是传参的时候使用还是使用枚举,只是传递的是枚举的字符串而不是枚举本身,这样既能保证限定了参数有效值的范围,又能解决参数不认识枚举的情况,当然了,参数里面的switch还是用字符串类型 public enum Weekend { Monday, Tuesday, Friday, } public void Test(string week) { Weekend weekend = (Weekend)Enum.Parse(typeof(Enum), week, false);//转换一下 switch (weekend) { case Weekend.Monday: Console.WriteLine("Today is Monday"); break; case Weekend.Tuesday: Console.WriteLine("Today is Tuesday"); break; case Weekend.Friday: Console.WriteLine("Today is Friday"); break; default: break; } } 关于电子邮箱系统的开发 统计问题~~~ C#中有模板类(template)的概念吗?指的是泛型(generic)吗? 20分求一个简单的计数问题。 关于C++的结构体和C#的结构体 Excle 问个简单的问题:如何定义可选参数,如同VB6.0里面的potion一样.顶者有分 高手请进 [提问]王开源是个什么人? listView1的疑惑?(高手指点) httpwebrequest.Referer的疑问,求csdn牛人解惑啊~~~~~~~ winform怎么获取cookies,并且带cookies登录网站呢?
{
Type1, Type2, Type3
};void foo(SomeType type)
{
switch (type)
{
SomeType.Type1: ...; break;
SomeType.Type2: ...; break;
SomeType.Type3: ...; break;
}
}
实在要写这么写:
void foo(string type)
{
string[] a = { "type1", "type2", "type3" };
SomeType[] b = { SomeType.Type1, SomeType.Type2, SomeType.Type3 };
var query = a.Zip(b, (x, y) => new { x, y }).SingleOrDefault(x => x.x == type);
if (query == null) //不是正确的类型
return;
SomeType yourType = query.y;
switch (yourType)
{
...
}
}
不知道你不用string的目的是什么
public enum Weekend
{
Monday,
Tuesday,
Friday,
} public void Test(string week)
{
Weekend weekend = (Weekend)Enum.Parse(typeof(Enum), week, false);//转换一下 switch (weekend)
{
case Weekend.Monday:
Console.WriteLine("Today is Monday");
break;
case Weekend.Tuesday:
Console.WriteLine("Today is Tuesday");
break;
case Weekend.Friday:
Console.WriteLine("Today is Friday");
break;
default:
break;
}
}