C#-s saab teha loogilisi operatsioone täisarvulistele objektidele bittide kaupa. Loogilise operatsiooni bittide kaupa tähendab see, et iga objekti bitt võetakse kordamööda ning iga biti loogiline operatsioonitulemus on iga bitt tulemuse väärtusest. C# poolt toetatud bitiloogikaoperaatorid on näidatud järgmisel joonisel:
Põhiline loa disain:
<summary>
///權限列舉 </summary> [FlagsAttribute] publicenumPermissions
{ Kirjeldus("Pole konfigureeritud")] Puudub=0, [Kirjeldus("Loo")] Create=1, [Kirjeldus("Loe")] Loe=2, [Kirjeldus("Uuendus")] Uuendus=4, [Kirjeldus("Kustuta")] Delete=8, [Kirjeldus ("Kõik funktsioonid")] Kõik=Loo| Loe| Uuendus| Kustuta
}
Tehnika 1: Kasuta võimsusväärtust 2 tulevaste bittide (&AND, |OR, ^XOR) loendamiseks.
Nõuanne 2: Lisa olemasolevale õigusele uus loa tegevus. (OR operatsioon)
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(luba. ToString()); Tulemus: Loo
Nõuanne 3: Lisa [FlagsAttribute] silt
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(luba. ToString()); Result:Create([FlagsAttribute] ei mõjuta tulemust)
permission=permission| Loads.Read; MessageBox.Show(luba. ToString()); Tulemus: 3 ([FlagsAttribute] ei lisatud) Result:Create,Read (lisa [FlagsAttribute])
Nõuanne 4: Eemalda teatud loa toiming olemasolevast loast. (XOR ja AND arvutusrakendused)
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(luba. ToString()); Tulemus: Loo
permission=permission| Loads.Read; permission=permission| Permissions.Update; MessageBox.Show(luba. ToString()); Tulemus: Loo, Loe, Uuenda
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(luba. ToString()); Tulemus: Loo, Uuenda
Nõuanne 5: Määra, kas sul on praeguses loas (JA operatsioonis) teatud õigus
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(luba. ToString()); Tulemus: Loo
permission=permission| Loads.Read; permission=permission| Permissions.Update; MessageBox.Show(luba. ToString()); Tulemus: Loo, Loe, Uuenda
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(luba. ToString()); Tulemus: Loo, Uuenda
boolIsCreatable=vale; if((permission&Permissions.Create)==Permissions.Create)
{ IsCreatable=true;
} else
{ IsCreatable=vale;
} MessageBox.Show(IsCreatable.ToString()); Tulemus: Tõsi
|