Neden numaralama izinleri genellikle 0, 1, 2, 4 değerleri var mı?
Neden insanlar hep 0, 1, 2, 4, 8
gibi numaralandırma değerleri kullanarak ve 0, 1, 2, 3, 4
değil mi?
Bu bir bit işlemleri yapmak, vb. var mı?
Gerçekten bu doğru bir şekilde nasıl kullanılacağı hakkında küçük bir örnek Pasajı takdir ediyorum :)
[Flags]
public enum Permissions
{
None = 0,
Read = 1,
Write = 2,
Delete = 4
}
CEVAP
İki güçleri vardır ve bunu yapabilirim çünkü
var permissions = Permissions.Read | Permissions.Write;
Ve belki daha sonra...
if( (permissions & Permissions.Write) == Permissions.Write )
{
// we have write access
}
Her set biraz izin (veya numaralandırılmış değeri mantıksal bir karşılık ne olursa olsun) karşılık gelir bit bir alandır. Eğer bu 1, 2, 3, ...
olarak tanımlanmış olsaydı bu şekilde bit operatörleri kullanın ve anlamlı sonuçlar elde etmek mümkün olmaz. Daha derin defterleri...
Permissions.Read == 1 == 00000001
Permissions.Write == 2 == 00000010
Permissions.Delete == 4 == 00000100
Burada bir desen fark ettiniz mi? Şimdi eğer benim orijinal örnek alırsak, yani
var permissions = Permissions.Read | Permissions.Write;
Sonra...
permissions == 00000011
Gördün mü? Her iki Read
Write
bit ayarlanır, ve bağımsız (Delete
bit olduğuna dikkat edin . kontrol edebilirim ^em>değilbu değer izin silmek ifade etmez. bu nedenle.
Bir bit tek bir alanda birden çok bayrak ve saklamanızı sağlar.
Neden Objective-C delegeler genellikle...
Neden genellikle`||``|`, fark nedir?ku...
Nasıl özel bir dize ile numaralama bağ...
Seçme değerleri değiştirmek zorunda ka...
Neden değişken adları genellikle harf ...