C#でたっぷり

繰り返しますが、一般的に何が知られているかについて書いています=)しかし、どこかにいくつかのフラグを関数として引数として渡す必要がある場合は、このメソッドを使用できます。 C#には多くはありません(UPD:.Netライブラリのクラスとしてではなく、言語の構文の組み込み構造として)。 ただし、列挙型(つまり、列挙型)には[FlagsAttribute]属性があります。
[Flags]<br> enum Magic<br>{<br> None = 0,<br><br> Fire = 1, // <br> Air = 2, // <br> Water = 4, // <br> Earth = 8, // <br><br> All = Fire | Air | Water | Earth<br>}<br> <br> * This source code was highlighted with Source Code Highlighter .



例を挙げてください:
class Program<br>{<br> // <br> [Flags]<br> enum Magic<br> {<br> None = 0,<br><br> Fire = 1, // <br> Air = 2, // <br> Water = 4, // <br> Earth = 8, // <br><br> All = Fire | Air | Water | Earth<br> }<br><br> // , <br> static void CastSpell( float power, Magic source)<br> {<br> if ((source & Magic.All) == Magic.None)<br> {<br> Console .WriteLine( " ." );<br> Console .WriteLine();<br> return ;<br> }<br><br> if ((source & Magic.Fire) != 0)<br> Console .WriteLine( " ." );<br> if ((source & Magic.Air) != 0)<br> Console .WriteLine( " ." );<br> if ((source & Magic.Water) != 0)<br> Console .WriteLine( " ." );<br> if ((source & Magic.Earth) != 0)<br> Console .WriteLine( " ." );<br><br> Console .WriteLine( "--!!! ( {0} )." , power);<br> Console .WriteLine();<br> }<br><br> // <br> static void Main( string [] args)<br> {<br> CastSpell(1, 0);<br> CastSpell(2, Magic.None);<br> CastSpell(3, Magic.Fire);<br> CastSpell(4, Magic.Earth | Magic.Water);<br> CastSpell(5, Magic.Air | Magic.Fire | Magic.Earth);<br> CastSpell(6, Magic.All);<br> }<br>}<br> <br> * This source code was highlighted with Source Code Highlighter .



もちろん、これは松葉杖を備えた本物の群衆ではありませんが、使用できます。 主なことは、セットの要素が2のべき乗であることを忘れず、ビット演算がどのように機能するかを覚えておくことです。 さて、MSDNで「FlagsAttributeクラス」について読む価値はあります。



All Articles