Есть ли эквивалент C # ´s |оператор в VB.Net? - PullRequest
0 голосов
/ 23 января 2019

Есть ли эквивалент оператора канала C # (|) в VB.Net?

У меня есть некоторый код отсюда Как предоставить полное разрешение файлу, созданному моим приложением, для ВСЕХ пользователей?

Это на C #, и я хочу преобразовать его в VB.Net.Я до сих пор на этом этапе (VS говорит, что есть ошибка: | InheritanceFlags.ContainerInherit):

Sub ZugriffsrechteEinstellen()

    Dim dInfo As New DirectoryInfo(strPfadSpracheINI)
    Dim dSecurity As New DirectorySecurity

    dSecurity = dInfo.GetAccessControl()
    dSecurity.AddAccessRule(New FileSystemAccessRule(New SecurityIdentifier(WellKnownSidType.WorldSid, Nothing), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow))

    dInfo.SetAccessControl(dSecurity)

End Sub

1 Ответ

0 голосов
/ 23 января 2019

Эквивалент Or.

InheritanceFlags.ObjectInherit Or InheritanceFlags.ContainerInherit

Он будет выполнять побитовую операцию "или" между операндами.

Например, если у вас есть следующее перечисление

C #:

enum Values
{
    None = 0,
    Odd = 1,
    Even = 2,
    All = 3
}

VB:

Enum Values
    None = 0
    Odd = 1
    Even = 2
    All = 3
End Enum

Результат Values.Odd | Values.Even (Values.Odd Or Values.Even) равен Values.All. Это потому, что Odd = 1 равно 01 в двоичном представлении, а Even = 2 равно 10 и 01 or 10 равно 11, что равно 3 (All).

...