[ kopca @ 08.09.2008. 10:28 ] @
Postavljam pitanje radoznalosti radi. Zamislite da imate enumeraciju: Code: //[Flags] public enum Test : int { Six = 6, Seven = 7, Eight = 8, Nine = 9 } ... Test six = Test.Six; Test seven = Test.Seven; Test eight = Test.Eight; Test combine = six | seven | eight; MessageBox.Show(combine.ToString()); MessageBox pokazuje 15, sto je i logicno, logicko 'ili' od 6, 7 i 8 daje 15. Otkomentarisite [Flags] atribut iznad enumeracije. Sada ce rezultat biti 'Six, Nine' sto je opet razumljivo. FlagsAttribute 'forsira' enumeraciju da se ponasa kao bit flags pa pokazuje minimum kombinacija koje uparene daju 15. Ali zasto je to 'Six, Nine' a ne 'Seven, Eight' ? System.Windows.Forms.Keys ima [Flags] atribut, ali su u njoj sve vrednosti sa tastature poredjane od 0 do 254, a Control, Shift i Alt su na kraju enumeracije: Code: // // Summary: // The SHIFT modifier key. Shift = 65536, // // Summary: // The CTRL modifier key. Control = 131072, // // Summary: // The ALT modifier key. Alt = 262144, tako da logicko 'ili' nema problema da 'upari' sve kombinacije ova tri tastera sa jednom od 0-254 vrednosti. Dakle, zasto je six | seven | eight - 'Six, Nine' a ne - 'Seven, Eight' ? |