変数Aと、変数Bがあり中身は同じなのに
if(A == B)で、同じと判定されません。
GetType()すると、両方とも、System.Singleです。
数字は両方、1や、2や、3等では駄目ですが、0のみ同じと判定されます。
また、ToString()や、(float)でキャストしてやると、0以外の数字でも同じと判定されます。
何か原因は考えられますでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ベストアンサー
追記
次のように回答していましたが、System.Single は参照型でなく 別の問題だろうとご指摘をいただきました。(Zuishinさんありがとうございます)
文字列型の場合は値を比較しますが、そうでない参照型の場合はインスタンスが同じものかどうかで判断されます。ただし、==演算子や、!=演算子のふるまいを上書きしていないはその限りではありません。
組み込みの値型の場合、等値演算子 (==) ではオペランドの値が等しい場合に true が返され、それ以外の場合は false が返されます。 string 以外の参照型の場合、== では 2 つのオペランドが同じオブジェクトを参照する場合に true が返されます。 string 型の場合は、== は文字列の値を比較します。
ユーザー定義の値の型は == 演算子をオーバーロードできます (「演算子」を参照)。 ユーザー定義参照型もオーバーロードはできますが、既定では、組み込み参照型とユーザー定義参照型のいずれに対しても == は前述のとおりに機能します。 == をオーバーロードする場合は、!= もオーバーロードする必要があります。 整数型に対する演算は、通常、列挙型で使用できます。
投稿2018/11/02 08:00
編集2018/11/02 08:19
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/02 08:10
2018/11/02 08:14

退会済みユーザー
2018/11/02 08:14
2018/11/02 08:48

退会済みユーザー
2018/11/02 09:01 編集
2018/11/02 09:03
2018/11/03 02:20

退会済みユーザー
2018/11/04 07:09

0
GetType()すると、両方とも、System.Singleです。
もしかして、片方or両方がobject
でしょうか?
object
型は参照型なのできちんとした型に戻してやらないと
object型の==
演算子が用いられppnさんの言う通りの結果になります。
==
演算子の代わりにEquals
メソッドを用いると結果が変わりませんか?
c#
1A.Equals(B);
投稿2018/11/02 13:15
編集2018/11/02 13:17総合スコア15149
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。