【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 2017-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        相关资源
        最近更新 更多