programing

일반적인 열거형의 정수 값을 가져옵니다.

lastmoon 2023. 6. 21. 22:56
반응형

일반적인 열거형의 정수 값을 가져옵니다.

기본적인 상황은 이렇습니다.

Public Class MyEnumClass(of T)
   Public MyValue as T
End Class

이것은 실제 클래스의 방대한 과도한 단순화이지만 기본적으로 T가 열거형이라는 것을 알고 있습니다(그렇지 않으면 다른 많은 문제가 있을 것이며 프로그래머가 만든 논리적 오류입니다).

기본적으로 MyValue의 기본 정수 값을 가져옵니다.

Cint 또는 Ctype을 사용하면 작동하지 않습니다.

멋진 반사 코드를 사용하려고 했는데 간단한 것만으로도 잘 작동합니다...내 VB를 용서해줘 난 C# 남자야.

Public Function GetEnumInt(Of T)(enumVal As T) As Integer
    Return Convert.ToInt32(enumVal)
End Function

시도해봤는데 효과가 있었습니다.

String.Format("{0:d}", MyValue)

모든 기본 값을 얻으려면 다음 작업을 수행할 수 있습니다(VB 구문이 정확했으면 합니다...)저는 최근에 주로 C#에서 일하고 있습니다):

Dim intVal As Integer

For Each intVal In  [Enum].GetValues(GetType(T))
    //intValue is now the enum integer value
Next

그것은 적어도 당신이 올바른 방향으로 시작하도록 할 수 있습니다.

이 기능도 작동합니다.Fix(enumval)

VB.NET의 또 다른 간단한 방법은 0에 추가하는 것입니다.

Dim intVal As Integer = 0 + myEnum

따라서, 이것은 효과가 있을 것입니다.

Sub GetEnumInt(of T)(enumVal as T) as Int
   return 0 + enumVal
End Sub

'존 스키트' 덕분에.하지만 그의 코드는 내 엑셀 2016에서 작동하지 않습니다.다음 코드가 정상적으로 작동하는 동안:

Public Enum TypOfProtectWs
    pws_NotFound = 0
    pws_AllowAll = 1
    pws_AllowFormat = 2
    pws_AllowNone = 3
End Enum

Private Function TypOfProtectWs2I(pws As TypOfProtectWs) As Integer
    TypOfProtectWs2I = Format("0", pws)
End Function

Private Sub test_TypOfProtectWs2I()
    Debug.Print TypOfProtectWs2I(pws_AllowAll)
End Sub

언급URL : https://stackoverflow.com/questions/378801/get-the-integer-value-of-an-enumeration-which-is-a-generic

반응형