C# galite atlikti logines operacijas su sveikaisiais objektais po bitus. Loginės operacijos bitais reikšmė yra ta, kad kiekvienas valdomo objekto bitas yra paeiliui, o kiekvieno bito loginės operacijos rezultatas yra kiekvienas rezultato vertės bitas. C# palaikomi bitų logikos operatoriai parodyti šiame paveikslėlyje:
Pagrindinis leidimo dizainas:
<summary>
///權限列舉 </summary> [FlagsAttribute] publicenumPermissions
{ Description("Nesukonfigūruota")] Nėra = 0, [Aprašas ("Sukurti")] Sukurti = 1, [Aprašymas ("Skaityti")] Skaityti = 2, [Aprašas ("Atnaujinti")] Atnaujinimas=4, [Aprašas ("Ištrinti")] Ištrinti = 8, [Aprašas ("Visos funkcijos")] Visi=Sukurti| Skaityti| Atnaujinti| Ištrinti
}
1 būdas: naudokite galios reikšmę 2 kaip išvardijimo reikšmę būsimoms bitų operacijoms (&AND, |OR, ^XOR).
2 patarimas: pridėkite naują leidimo veiksmą prie esamo leidimo. (ARBA operacija)
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(leidimas. ToString()); Rezultatas:Sukurti
3 patarimas: pridėkite žymą [FlagsAttribute]
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(leidimas. ToString()); Rezultatas:Create([FlagsAttribute] neturi įtakos rezultatui)
permission=permission| Permissions.Read; MessageBox.Show(leidimas. ToString()); Rezultatas: 3 ([FlagsAttribute] nepridėtas) Rezultatas:Kurti,Skaityti (pridėti [FlagsAttribute])
4 patarimas: pašalinkite tam tikrą leidimo veiksmą iš esamo leidimo. (XOR ir AND skaičiavimo programos)
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(leidimas. ToString()); Rezultatas:Sukurti
permission=permission| Permissions.Read; permission=permission| Permissions.Update; MessageBox.Show(leidimas. ToString()); Rezultatas:Kurti,Skaityti,Naujinti
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(leidimas. ToString()); Rezultatas:Kurti,Naujinti
5 patarimas: nustatykite, ar turite tam tikrą leidimą dabartiniame leidime (AND operacijoje)
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(leidimas. ToString()); Rezultatas:Sukurti
permission=permission| Permissions.Read; permission=permission| Permissions.Update; MessageBox.Show(leidimas. ToString()); Rezultatas:Kurti,Skaityti,Naujinti
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(leidimas. ToString()); Rezultatas:Kurti,Naujinti
boolIsCreatable=klaidingas; if((permission&Permissions.Create)==Permissions.Create)
{ IsCreatable=true;
} kitaip
{ IsCreatable=false;
} MessageBox.Show(IsCreatable.ToString()); Rezultatas: teisinga
|