今日は、== 演算子、Equal 関数、Object.ReferenceEqual メソッドについて読んでいました。
- 演算子 == 等しい参照のチェックに使用されます。
- 等しい方法 - 等しい値のチェックに使用されます。
- Object.ReferenceEqual – 等しい参照のチェックに使用されます。
テスト コンソール アプリケーションを作成しました。いくつか質問があります。全部答えていただけると助かります。
class Program
{
static void Main(string[] args)
{
int intValue = 5;
string strValue = "5";
Console.WriteLine(string.Format("{0} ", intValue.ToString() == strValue));// Output is TRUE
Console.WriteLine(string.Format("{0} ", intValue.Equals(strValue))); // Output is FALSE
Console.WriteLine(string.Format("{0} ", intValue.ToString().Equals(strValue))); // Output is TRUE
Console.WriteLine(string.Format("{0} ", object.ReferenceEquals(intValue, strValue)));// Output is FALSE
Console.WriteLine(string.Format("{0} ", object.ReferenceEquals(intValue.ToString(), strValue)));// Output is FALSE
Console.Read();
}
出力に 5 行あります。
1 行目 – 出力は True です。
私の知る限りでは、ここで私はキャスティングをしています。したがって、== 演算子チェック参照として TRUE を取得しています。
行 2 – 出力は False です。
問題 1. オブジェクトの機能チェック値が等しい。ここでは同じ値ですが、False になっています。なぜ?
3 行目 – 出力は True です。
質問 2. ここではキャストを行っているため、True を取得しています。なぜ?
4 行目。出力は False です。
私の知る限り、両方のオブジェクトは異なるタイプです。だから、私はFALSEになっています。
5 行目。出力は False です。
質問 3. ここでキャストを行っていますが、それでも False が返されます。なぜ?
質問 4. == 演算子と Object.ReferenceEqual の違いは何ですか?