0
在土耳其區域設置,下面似乎是一個問題:在土耳其語區域[Enum] .GetName不返回正確的名稱。爲什麼?
Public Enum enFonts
TOKEN_Line_Number = 2
End Enum
Dim StyleName As String = [Enum].GetName(GetType(enFontsUpper), fnt).ToUpper
StyleName和被設置爲「TOKEN_LxNE_NUMBER」,其中x設定點爲大寫我在上面。爲什麼?
下面是測試代碼,演示了此行爲:
喬金德
Module Module1
Public Enum enFonts
TOKEN_Plain_Text = 1
TOKEN_Line_Number = 2
End Enum
Public Enum enFontsUpper
TOKEN_PlaIn_Text = 1
TOKEN_LIne_Number = 2
End Enum
Friend Styles As New Collection
Sub Main()
Dim STL As String = "TOKEN_LINE_NUMBER"
Dim fnt As enFonts = enFonts.TOKEN_Line_Number
'The following compare fails
Call Compare(STL, enFonts.TOKEN_Line_Number)
' The following compare works because In changed i to uppercase I in LIne
Call Compare2(STL, enFontsUpper.TOKEN_LIne_Number)
End Sub
Private Sub Compare(STL As String, fnt As enFonts)
Dim StyleName As String = [Enum].GetName(GetType(enFonts), fnt).ToUpper
If StyleName.Equals(STL) Then
Call MsgBox(String.Format("'{0}' is equal to '{1}'", STL, StyleName))
Else
Call MsgBox(String.Format("'{0}' is NOT equal to '{1}'", STL, StyleName))
End If
End Sub
Private Sub Compare2(STL As String, fnt As enFontsUpper)
Dim StyleName As String = [Enum].GetName(GetType(enFontsUpper), fnt).ToUpper
If StyleName.Equals(STL) Then
Call MsgBox(String.Format("'{0}' is equal to '{1}'", STL, StyleName))
Else
Call MsgBox(String.Format("'{0}' is NOT equal to '{1}'", STL, StyleName))
End If
End Sub
End Module
請使用編程語言標記。 – JJJ
非常臭名昭着的谷歌「土耳其我的問題」基本命中。你必須決定用什麼語言來編寫你的枚舉變量。看起來大致像CultureInfo.InvariantCulture給我,絕對不是土耳其。所以告訴ToUpper()。 –