반응형
일반적인 열거형의 정수 값을 가져옵니다.
기본적인 상황은 이렇습니다.
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
반응형
'programing' 카테고리의 다른 글
Excel에서 워크시트의 모든 셀을 선택하는 방법.c#의 범위 개체? (0) | 2023.06.21 |
---|---|
__init__()의 내부 변수와 외부 변수 간의 차이(클래스 및 인스턴스 속성) (0) | 2023.06.21 |
where 절에 윈도우 기능이 없는 이유는 무엇입니까? (0) | 2023.06.21 |
vba를 사용하여 단일 워크시트만 다른 워크북에 복사하는 방법 (0) | 2023.06.21 |
IIS7에서 작동하는 gzip 압축을 어떻게 얻을 수 있습니까? (0) | 2023.06.21 |