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
强制的。您必须声明abool Equals(Foo other)
,但必须使用a.Equals(b)
调用它,编译器将不会对其进行装箱。a和b的声明类型是什么?是否可以使用特定于类型的版本重载Equals
?这就是IEquatable
强制执行的操作。您必须声明abool Equals(Foo other)
,但必须使用a.Equals(b)
调用它,编译器将不会对其进行装箱。a和b的声明类型是什么?是否可以使用特定于类型的版本重载Equals
?这就是IEquatable
强制执行的操作。您必须声明abool Equals(Foo other)
,但必须使用a.Equals(b)
调用它,编译器将不会对其进行装箱。a和b的声明类型是什么?是否可以使用特定于类型的版本重载Equals
?这就是IEquatable
强制执行的操作。您必须声明abool-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);