System :: Booleanで3項演算子を使用するには?このサンプルコードは、常にtrueを返します:System :: Boolean変数の3進演算子
bool Test(Boolean^ value)
{
return value ? true : false;
}
System :: Booleanで3項演算子を使用するには?このサンプルコードは、常にtrueを返します:System :: Boolean変数の3進演算子
bool Test(Boolean^ value)
{
return value ? true : false;
}
自分の未熟の質問に答える、このコードは動作します:
:このコードは、より良いの作品いっそ(ハンスとMattのアドバイスと次):bool Test(Boolean^ value)
{
return (bool)value ? true : false;
}
EDIT
ブール値とブール値が変換可能であるため、これは他の場所で発生する自動変換に依存する良いコードです。例三項演算子を示す以外はほとんど意味があります。
bool Test(bool value)
{
return value ? true : false;
}
ハンスが示唆したように - これをしないでください、あなたはボクシングとunboxingペナルティが不必要に発生します。 –
System::Boolean
のご利用状況は、最初の場所で間違っていると、それは三項演算子とは何の関係もありません。値の型を参照として渡さないでください。
不必要なペナルティはありませんが、回答のコードは正常に動作しますが、C#では動作しません。コンパイラは、bool Test(Boolean^ value)
関数を呼び出すときに不平を言うでしょう。 C#では参照される値型の概念がないためです。
ブール値型です。引数としてboxedコピーを渡すことはまったく意味がありません。もちろん、オブジェクトは決してnullptrではないので、あなたのコードは失敗しました。それをブールに戻すことは、正当な理由でCPUサイクルを焼くだけです。^ –
を削除します。ブール値はC++/CLIで自動的にboolに変換されるため、3項演算子を使用する理由は何ですか? Hansが提案したように^をドロップすると、単に 'value'を返すことができます。 –