|
|
1
1098
在.NET核心和.NET中>4 there is a generic parse method :
这还包括C 7的新内联
如果您可以访问C 7和最新的.NET,这是最好的方法。 原始答案在.NET中,它相当难看(直到4或更高版本):
我倾向于简化这一点:
然后我可以做:
注释中建议的一个选项是添加一个扩展名,这非常简单:
最后,如果无法分析字符串,则可能需要使用默认枚举:
这就是电话:
但是,我会小心地将这样的扩展方法添加到
|
|
|
2
267
使用
使用C 7.0可以进一步简化 parameter type inlining :
|
|
|
3
170
请注意,enum.parse()的性能很糟糕,因为它是通过反射实现的。(Enum.ToString也是如此,反过来也是如此。)
如果需要在性能敏感的代码中将字符串转换为枚举,最好的办法是创建一个
|
|
4
77
你在找 Enum.Parse .
|
|
5
26
你可以使用 extension methods 现在:
你可以用下面的代码给他们打电话(这里,
|
|
|
6
16
因此,如果您有一个名为mood的枚举,它将如下所示:
|
|
|
7
15
当心:
即使
我不想体验用户自愿或不愿意引发这种行为的后果。 另外,正如其他人所提到的,对于大型枚举(即可能值的线性数)来说,性能并不理想。 我建议如下:
|
|
8
13
Enum.Parse 是你的朋友:
|
|
9
12
您可以使用默认值扩展接受的答案,以避免出现异常:
然后你这样称呼它:
|
|
|
10
9
我们不能假设输入是完全有效的,并使用了@keith's答案的这种变体:
|
|
|
11
7
|
|
|
12
5
将字符串解析为tenum,不使用try/catch,也不使用.NET 4.5中的typarse()方法
|
|
|
13
3
使用胰蛋白酶的超简单代码:
|
|
|
14
2
我喜欢扩展方法的解决方案。
下面是我的测试实现。
|
|
|
15
1
=======一个完整的程序==
|
|
16
1
我使用了类(具有解析和性能改进的强类型枚举版本)。我在Github上找到的,它也应该适用于.NET 3.5。它有一些内存开销,因为它缓冲字典。
博客是 Enums â Better syntax, improved performance and TryParse in NET 3.5 . 代码: https://github.com/damieng/DamienGKit/blob/master/CSharp/DamienG.Library/System/EnumT.cs |
|
|
17
1
对于性能而言,这可能有助于:
|
|
|
18
1
我发现这里不考虑枚举值为EnumMember值的情况。所以我们走到这里:
枚举示例:
|
|
|
19
1
必须使用Enum.Parse从Enum中获取对象值,然后必须将对象值更改为特定的Enum值。可以使用convert.changeType来强制转换为枚举值。请看下面的代码段
|
|
|
20
1
尝试此示例:
在这个示例中,您可以发送每个字符串,并设置
|
|
Ben · 统计向量中的单词在字符串中出现的频率 1 年前 |
|
|
bear_525 · 从列中删除中间名和首字母,并保存在单独的列中 1 年前 |
|
|
asdfadf · 为什么具有相同内存值的字符串和整数打印方式不同? 1 年前 |
|
|
user764754 · 防止多行原始字符串文字中出现新行字符 1 年前 |
|
|
Bogaso · 从列表中返回与模式匹配的元素 1 年前 |
|
|
Jasco · 如何使用VBA提取两个相似字符之间的字符串中的单词? 1 年前 |