Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么fluent断言失败,但为枚举传递了断言?_C#_Assertion_Fluent Assertions - Fatal编程技术网

C# 为什么fluent断言失败,但为枚举传递了断言?

C# 为什么fluent断言失败,但为枚举传递了断言?,c#,assertion,fluent-assertions,C#,Assertion,Fluent Assertions,我很难找到断言1失败但断言2通过的原因: var a = Test.test1; var b = Test.test1; a.Should().BeSameAs(b); //1 Assert.Equal(a, b); //2 Test是如下所示的枚举: enum Test { test1, test2 } Should()对于enum解析为ObjectAssertions,将enum放入对象中。 对于ObjectAssertions而言,BeSameAs的expected参数也是ob

我很难找到断言1失败但断言2通过的原因:

var a = Test.test1;
var b = Test.test1;
a.Should().BeSameAs(b); //1
Assert.Equal(a, b);     //2
Test
是如下所示的枚举:

enum Test { test1, test2 }
Should()
对于
enum
解析为
ObjectAssertions
,将
enum
放入
对象中。
对于
ObjectAssertions
而言,
BeSameAs
expected
参数也是
object
类型

因此,
a.Should().BeSameAs(b)
a
b
框成两个不同的
对象
s,然后检查这两个对象是否引用了内存中完全相同的对象

如果要断言
a
b
是相同的
enum
,则应使用

a.Should().Be(b);

对可能询问者知道从
System.Object
继承的静态方法的相同行为。如果你说
var q=ReferenceEquals(a,b)然后
q
将为
false
。两个不同的框具有相同的内容。@Jeppe,与ReferenceEquals(a,b)的比较确实澄清了问题。谢谢