相关疑难解决方法(0)

"bool"作为对象vs"string"作为对象测试相等

我对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对象除了它的值以外的任何东西?

.net c# mono nunit

2
推荐指数
1
解决办法
1460
查看次数

标签 统计

.net ×1

c# ×1

mono ×1

nunit ×1