15

を に変換しようとすると、奇妙なエラー メッセージが表示されましたobjectboolコードは次のとおりです。

public partial class ModifierAuteur : DevExpress.XtraEditors.XtraForm
{
    public ModifierAuteur(object getKeyDecesCheckBox)
    {
         decesCheckBox.Checked = getKeyDecesCheckBox == null ? null : (bool)getKeyDecesCheckBox;
    }
}

これはエラーメッセージです:

<null>と の間に暗黙的な変換がないため、条件式の型を判別できません。bool

4

4 に答える 4

25

割り当てが可能であると仮定すると、次のboolように nullable に変換する必要があります。

decesCheckBox.Checked = getKeyDecesCheckBox == null ? null : (bool?)((bool)getKeyDecesCheckBox);

内側のキャスト toboolは値をボックス化解除し、外側のキャスト toは条件式bool?と互換性を持たせます。null

代入の左側で s が許可されていない場合は、 がnullであるときに設定する値を決定する必要があります。通常、それは次のとおりです。getKeyDecesCheckBoxnullfalse

 decesCheckBox.Checked = getKeyDecesCheckBox == null ? false : (bool)getKeyDecesCheckBox;
于 2012-10-07T12:12:29.380 に答える
3

Checked プロパティが null 許容 bool 型であると仮定すると、おそらく次のようになります。

decesCheckBox.Checked = (getKeyDecesCheckBox == null ? (bool?)null : (bool?)getKeyDecesCheckBox);

bool (null 不可) を取る場合は、次の方法で簡単に null を false に変換できます。

decesCheckBox.Checked = (getKeyDecesCheckBox == null ? (bool?)null : (bool?)getKeyDecesCheckBox).GetValueOrDefault();
于 2012-10-07T12:34:14.477 に答える
0

decesCheckBox.Checked is of type bool. As such you must feed it either false or true.

于 2012-10-07T12:27:08.657 に答える
0

君の '?:' 演算子には、互換性のない戻り値の型が 2 つある可能性があります。オブジェクトが null の場合、値 null を返します。これは、null 許容型にキャストできます。オブジェクトが null でない場合、その戻り値の型は bool です。

「Checked」がどのタイプかはわかりませんが、そのタイプは「bool」であると思われます。

ここでの問題は、null を「bool」型にキャストできないため、オブジェクトが null の場合にどの型にするかを決定する必要があることです。false にしたい場合は、ステートメントを次のように記述できます。

decesCheckBox.Checked = (getKeyDecesCheckBox as bool) ?? false;

?? オブジェクトが null の場合、または bool に変換できない場合、演算子は値「false」を割り当てます。

于 2012-10-07T12:33:04.733 に答える