programing

열거 결합

golfzon 2023. 5. 9. 23:24
반응형

열거 결합

VB.net 에서 에넘을 결합할 수 있는 방법이 있습니까?

저는 당신이 원하는 것이 플래그 타입 열거라고 믿습니다.

Flags 속성을 열거형 맨 위에 추가한 다음 'Or' 키워드와 열거형을 결합할 수 있습니다.

다음과 같이:

<Flags()> _
Enum CombinationEnums As Integer
  HasButton = 1
  TitleBar = 2
  [ReadOnly] = 4
  ETC = 8
End Enum

참고: 오른쪽에 있는 숫자는 항상 두 배로 큽니다(2의 거듭제곱). 이것은 설정된 개별 플래그를 구분하기 위해 필요합니다.

Or 키워드를 사용하여 원하는 플래그를 결합합니다.

Dim settings As CombinationEnums
settings = CombinationEnums.TitleBar Or CombinationEnums.Readonly

그러면 제목 표시줄과 읽기 전용이 열거형으로 설정됩니다.

설정된 항목 확인하기

If (settings And CombinationEnums.TitleBar) = CombinationEnums.TitleBar Then
  Window.TitleBar = True
End If

FlagsAttribute를 사용하여 Enum을 결합할 수 있도록 Enum을 다음과 같이 장식할 수 있습니다.

<FlagsAttribute> _
Public Enumeration SecurityRights
None = 0
Read = 1
Write = 2
Execute = 4

그런 다음 이들을 다음과 같이 부릅니다(클래스 UserPriviletes).

Public Sub New ( _
    options As SecurityRights _
)

New UserPrivileges(SecurityRights.Read OR SecurityRights.Execute)

위의 사용자가 읽기 및 실행을 모두 하나의 고급 보안 권한 변수로 가지고 다닐 수 있도록 효과적으로 결합됩니다(비트 산술).

사용자에게 AND(더 비트 단위 연산)를 사용하여 확인하려는 Enum 값으로 사용자 열거값을 확인하는 권한이 있는지 확인하려면 다음과 같이 하십시오.

//Check to see if user has Write rights
If (user.Privileges And SecurityRights.Write = SecurityRigths.Write) Then
    //Do something clever...
Else
    //Tell user he can't write.
End If

HTH, 타일러

내가 당신의 질문을 올바르게 이해했다면 당신은 다른 열거형을 결합하기를 원합니다.그러면 하나의 변수가 두 개의 서로 다른 열거형 중 하나의 오른쪽 값을 저장할 수 있습니까?하나의 열거형 유형의 서로 다른 두 값을 결합하여 저장하는 것에 대해 묻는 경우 Dave Arkell의 설명을 참조할 수 있습니다.

에눔은 단지 통사적인 당과 정수일 뿐입니다.따라서 중복이 없는지 확인하면 주조를 통해 결합할 수 있습니다.

하지만 그것은 예쁜 코드를 만들지는 못할 것입니다.저는 대부분의 시간에 열거형을 사용하는 것을 피하려고 합니다.일반적으로 당신이 당신의 코드에서 열거형을 번식시킨다면 반복적인 사례 진술과 다른 지저분한 반대 패턴을 낳는 것은 시간 문제입니다.

조합의 열쇠Enums는 값이 2의 거듭제곱(1, 2, 4, 8 등)인지 확인하여 비트 연산을 수행할 수 있도록 하는 것입니다.|= &=) 그것들.Enums에 태그를 지정할 수 있습니다.Flags기여하다.AnchorWindows Forms 컨트롤의 속성은 이러한 컨트롤의 예입니다.플래그로 표시된 경우 Visual Studio에서는 속성 디자이너의 드롭다운에서 값을 하나만 선택하는 대신 값을 확인할 수 있습니다.

열거형 플래그()를 사용하면 여기에 좋은 기사가 있습니다.

언급URL : https://stackoverflow.com/questions/58517/combining-enums

반응형