|
分類:[雑談]
■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で元の値に戻すというのは許容範囲かもしれません。
|