我对C#比较陌生,今天我注意到一些有趣的东西,我想我从来没有注意到,或者我错过了一些东西.这是一个NUnit测试给出一个例子:
object boolean1 = false;
object booloan2 = false;
Assert.That(boolean1 == booloan2);
Run Code Online (Sandbox Code Playgroud)
此单元测试失败,但是这个测试通过:
object string1 = "string";
object string2 = "string";
Assert.That(string1 == string2);
Run Code Online (Sandbox Code Playgroud)
我并不感到惊讶,第一个看不到boolean1,而boolean2是不同的引用.但令我不安的是,第一个失败了,第二个失败了.我(在某个MSDN上)读到了对String类做了一些魔术来促进这一点.我认为我的问题真的是为什么这个行为不是在bool中复制了?作为注释...如果boolean1和2被声明为bool那么没有问题.
这些差异的原因是什么或为什么以这种方式实施?是否有一种情况,你想要引用bool对象除了它的值以外的任何东西?