Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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# 我可以在不装箱的情况下执行可为空的结构相等性测试吗?_C#_Boxing - Fatal编程技术网

C# 我可以在不装箱的情况下执行可为空的结构相等性测试吗?

C# 我可以在不装箱的情况下执行可为空的结构相等性测试吗?,c#,boxing,C#,Boxing,我有一个结构Foo:IEquatable。我试图写: bool isEqual = a.Equals(b); 其中a和b都是Foo?类型。此代码正常工作,但b正在装箱!有没有避免装箱的方法?您可以调用静态方法: 您可以调用静态方法: 您可以调用静态方法: 您可以调用静态方法: a和b的声明类型是什么?是否可以使用特定类型的版本重载Equals?这就是IEquatable强制的。您必须声明abool Equals(Foo other),但必须使用a.Equals(b)调用它,编译器将不会对其进行

我有一个
结构Foo:IEquatable
。我试图写:

bool isEqual = a.Equals(b);
其中
a
b
都是
Foo?
类型。此代码正常工作,但
b
正在装箱!有没有避免装箱的方法?

您可以调用静态方法:

您可以调用静态方法:

您可以调用静态方法:

您可以调用静态方法:



a和b的声明类型是什么?是否可以使用特定类型的版本重载
Equals
?这就是
IEquatable
强制的。您必须声明a
bool Equals(Foo other)
,但必须使用
a.Equals(b)
调用它,编译器将不会对其进行装箱。a和b的声明类型是什么?是否可以使用特定于类型的版本重载
Equals
?这就是
IEquatable
强制执行的操作。您必须声明a
bool Equals(Foo other)
,但必须使用
a.Equals(b)
调用它,编译器将不会对其进行装箱。a和b的声明类型是什么?是否可以使用特定于类型的版本重载
Equals
?这就是
IEquatable
强制执行的操作。您必须声明a
bool Equals(Foo other)
,但必须使用
a.Equals(b)
调用它,编译器将不会对其进行装箱。a和b的声明类型是什么?是否可以使用特定于类型的版本重载
Equals
?这就是
IEquatable
强制执行的操作。您必须声明a
bool-Equals(Foo-other)
,但必须使用
a.Equals(b)
调用它,编译器将不会装箱。谢谢!我选中了
Nullable.Equals
,但它也在执行装箱。我没有意识到有一个
Nullable.Equals
@Mr.Smith:是的,它使用的是非泛型
Nullable
类。我承认这有点让人困惑:)谢谢!我选中了
Nullable.Equals
,但它也在执行装箱。我没有意识到有一个
Nullable.Equals
@Mr.Smith:是的,它使用的是非泛型
Nullable
类。我承认这有点让人困惑:)谢谢!我选中了
Nullable.Equals
,但它也在执行装箱。我没有意识到有一个
Nullable.Equals
@Mr.Smith:是的,它使用的是非泛型
Nullable
类。我承认这有点让人困惑:)谢谢!我选中了
Nullable.Equals
,但它也在执行装箱。我没有意识到有一个
Nullable.Equals
@Mr.Smith:是的,它使用的是非泛型
Nullable
类。我承认,这有点让人困惑:)
bool isEqual = Nullable.Equals(a, b);