C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 106 を表示中)
■63521 / )  CBoolについて(#63492スレ:63519より分岐)
□投稿者/ shu (60回)-(2012/09/04(Tue) 12:27:14)

分類:[雑談] 

No63519 (魔界の仮面弁士 さん) に返信

> 言いたいことは分かります。
理解していただきありがとうございます。


> >> CBoolはBoolean型への変換を行う関数であって
>>何を Boolean 型に変換する事を目的としているのでしょう。
>
> この質問に対する答えもお聞きしたいです。
>
変換元の集合がTrue,Falseに対し1:1で対応していてTrue,False(Yes,No/On,Off)
の意味として使用している場合、かつCboolでの変換で思ったとおりに変換が出来るときに使用することを
目的としていると思います。例としては
(1)0をFalse,1をTrueの代わりとして扱っている場合
(2)"True"をTrue, "False"をFalseの代わりとして扱っている場合、(ファイルへ保存したデータの読込時など)
(3)Object型にBoolean値を格納している場合 (DBからの読込の場合など)
※(1)のケースがビットフラグ値のケースに似ていますがあくまでも扱う値がBooleanに対応している
値であるということが必要なのではないかと思っています。


> 「互換性のために」という文からは、以前は使われていたけれども
> 現在は推奨されない変換処理であるという意図を感じるのですが、だとすると
> どういう時に CBool は使われるべきでしょうか。(あるいは、CBool 自体を
> 将来的には廃止するべきだ、という思いがあるのでしょうか)
上記例の(1),(2)については特定の定数に対する1:1の対応付けを強制しているので
このような変換はそもそも
A <> 0
B = 1
C = "True"
D <> "False"
という演算結果のBoolean値を使った方が確実(明確な仕様がFrameworkレベルで定められれば
CBoolの方が確実ですが)なので結局私が今思いつくところではObject型にBox化されたBoolean値を
UnBox化するときに使うのが良いのではないでしょうか?
ただし(2)のケースで出力した文字列がToStringによるものであればCBoolで元の値に戻すというのは許容範囲かもしれません。

返信 編集キー/


管理者用

- Child Tree -