トップ回答者
DataGridView のBool型の取得

質問
-
DataGridView のcellの値を取得しようとしています。
cellの値がstring型であれば、dataGridView1["ID", i].Value.ToString();
で、問題ないと思うのですが、
cellの値がbool型(bit型というのでしょうか?)のときにbool ok;
if (dataGridView1["ID", i].Value.ToString() == true.ToString())
ok = true;
else
ok = false;
という条件式は、何だか変な感じがします。
true かfalse かを判断する普通の方法を教えていただきたいと思います。環境
Visual Studio 2010 C#
Vista Home Premium- 編集済み yasheeki 2010年12月30日 3:02 理解困難
回答
すべての返信
-
SurferOnWwwさんが書かれている通りで問題は解決しますが、trueやfalseと比較する条件式について少し書いておきます。
if文での条件判断は、カッコ内がtrueかfalseで判断しますので、必ずしもカッコ内が==で比較する式になっている必要はありません。
つまり、if (・・・) の・・・は、==で比較した結果がtrueかどうかでも、
bool a = true;
if (a) { }
でaがtrueかどうかでも良いのです。したがって、if ((bool)dataGridView1["ID", i].Value == true) は、
if ((bool)dataGridView1["ID", i].Value) で、十分ですし、
if ((bool)dataGridView1["ID", i].Value == false) は、
if (!(bool)dataGridView1["ID", i].Value) で、十分です。
また、以下のように、flgがtrueならflgをfalseに、flgがfalseならflgをtrueにしたい場合、以下のように書かれているのをたまに見かけます。
bool flg;
if (flg)
flg = false;
else
flg = true;これも、以下のように簡潔に書けます。
flg = !flg;
このように、trueやfalseと比較する場合は、少し視点を切り替えられると良いと思います。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/ -
簡潔に書くのであれば、null合体演算子があります。
C#でnullチェックを簡潔に行うには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/991coalescingop/coalescingop.html
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/ -
参考になるものをご紹介いただき、ありがとうございます。
しかし、下記の方法を使ってみたところ、旨く行きました。
if (personsGrid["IsDead", pos].Value.ToString() == "")
ok = false;
else
ok = (bool)personsGrid["IsDead", pos].Value;でも、やっぱりここで、
.Value.ToString() == ""
というような変な方法しか思い浮かびません。この場合は(bool)ではない何か別のキャスト方法などがあるのでしょうか?
- 編集済み yasheeki 2010年12月31日 8:50 食い違い