【问题标题】:Enum indexes from string [duplicate]字符串中的枚举索引[重复]
【发布时间】:2016-12-18 08:08:10
【问题描述】:
假设我有一个带有以下代码的控制台应用程序:
Enum FoodItems
apple
banana
pineapple
End Enum
Sub Main()
Dim input As String = Console.ReadLine()
End Sub
如果 input 与枚举中的成员名称具有相同的值,我希望能够从 FoodItems 中的特定成员获取值;即当输入为“香蕉”时得到 1。如何处理这段代码?
【问题讨论】:
标签:
vb.net
enums
console-application
【解决方案1】:
不知道是不是理解的这么透彻:你想让用户写点东西,如果这个东西是你的 Enum 中的一个单词,输出会是“Enum 中单词的个数”吗?例如,如果我写香蕉,应用程序将写 1。
如果这是您想要的,您可以轻松地这样做:
If input = FoodItems.banana.ToString() Then Console.WriteLine(FoodItems.banana)
Console.ReadLine()
如果要检查枚举中的所有元素,则必须选择大小写:
Sub Main()
Dim input As String = Console.ReadLine()
Select Case input
Case FoodItems.apple.ToString()
Console.WriteLine(FoodItems.apple)
Case FoodItems.banana.ToString()
Console.WriteLine(FoodItems.banana)
Case FoodItems.pineapple.ToString()
Console.WriteLine(FoodItems.pineapple)
End Select
Console.ReadLine()
End Sub
可能有更好的方法可以做到这一点,但我会这样做。
【解决方案2】:
你可以试试这个——对我来说效果很好。如果字符串是枚举,下面的函数要么返回枚举索引,否则返回 -1。
<Flags> Friend Enum test
banana
apple
orange
pear
End Enum
Private Function ReturnEnum(inputString As String) As Integer
Dim a As test
Try
a = test.Parse(GetType(test), inputString)
Catch
Return -1
End Try
Return CInt(a)
End Function