掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Flags()の意味は? (ID:147417)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> この中で、<Flags()>は何を意味するのでしょうか。 FlagsAttribute 属性は、その列挙値がビット単位のフラグ値として 利用されるものであることを意味します。 ビットフラグとして利用される列挙体は幾つかありますが、 ここでは AnchorStyles 列挙体を例に挙げてみます。 AnchorStyles は <Flags()> が付与されており、各メンバーは None = 0 Top = 1 Bottom = 2 Left = 4 Right = 8 です。 これらは、コントロールの Anchor プロパティで利用される値であり、 上記の値の組み合わせで、コントロールの固定位置を制御できます。 これらの整数値の組み合わせで考えてみると、 0 => None 1 => Top 2 => Bottom 3 => Top, Bottom 4 => Left 5 => Top, Left 6 => Bottom, Left 7 => Top, Bottom, Left 8 => Right 9 => Top, Right 10 => Bottom, Right 11 => Top, Bottom, Right 12 => Left, Right 13 => Top, Left, Right 14 => Bottom, Left, Right 15 => Top, Bottom, Left, Right という 16 パターンになっているわけですね。 一方、<Flags()> が付かないものは、単一指定を目的としています。 たとえば Form の FormBorderStyle プロパティ(FormBorderStyle 列挙体)の場合、 複数の枠線が同時に適用されることはありえませんよね。このように、 排他指定的に使われるものに対しては、Flags が付きません。 実験のため、下記のようなコードを試してみてください。 Dim x, y, z As LanCmdFlag x = LanCmdFlag.Calibration y = LanCmdFlag.PenDown z = x Or y Label1.Text = x.ToString() Label2.Text = y.ToString() Label3.Text = z.ToString() TextBox1.Text = CInt(x).ToString() TextBox2.Text = CInt(y).ToString() TextBox3.Text = CInt(z).ToString() そして次に、Flags の属性を外した状態で実行して、 両者の違いを確認してみてください。Label3 に変化が現れるはずです。 なお、列挙型に英語の名前を付ける場合には、 Flags() が指定される場合に限り「複数形」を利用し、 それ以外のケースでは「単数形」で命名するのが一般的です。 http://msdn.microsoft.com/ja-jp/library/cc433257.aspx http://msdn.microsoft.com/ja-jp/library/bb264486.aspx すべてがこの命名パターンというわけではありませんが、 少なくとも FormBorderStyle と AnchorStyles では、 この複数形/単数形のルールに則っていることが分かりますね。 > それらしき回答を引き出せませんでした。 求める回答になっているかどうかは分かりませんが、関連情報として。 http://www.atmarkit.co.jp/fdotnet/dotnettips/1052enumflags/enumflags.html
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.