如何在 C# 中覆盖 HashSet<T> 的 + 运算符
how can override + operator for HashSet<T> in c#
我们可以覆盖现有 class 的任何操作(例如:'+')吗?
我想要合并 2 HashSet 的覆盖 + 操作并删除重复值。
在这种情况下,我想覆盖 HashSet 的 + 操作,但我不知道如何为现有的 class 实现 + 运算符。
互联网上的所有教程都为新 class 实现了运算符。给定泛型的SetHash,如何进行+运算?
我创建了一个 class 来实现 + 运算符:
public static HashSet<T> operator +(HashSet<T> left, HashSet<T> right) where T : class
{
return left.Union(right);
}
但不工作并给出很多错误(23 个错误)。其中一些是:
.operator +(HashSet, HashSet)' must declare a body because it is not marked abstract, extern, or partial
我想我可以用扩展方法解决这个问题,但我不确定
运算符重载显式仅适用于用户定义的类型。它实际上是1st sentence。但是,您可以创建一个继承自 HastSet<T>
的 class - 毕竟它不是密封的。唯一的目的是添加 function/override.
public class AddAbleHashSet<T> : HashSet<T> {
public static HashSet<T> operator +(HashSet<T> left, HashSet<T> right) where T : class
{
return left.Union(right);
}
}
P.S.: 我不确定函数的 where T : class
限制在做什么。您正在合并两个哈希集。类型 T 对此根本不重要。我实际上不确定那在那里是否有效。
我们可以覆盖现有 class 的任何操作(例如:'+')吗? 我想要合并 2 HashSet 的覆盖 + 操作并删除重复值。
在这种情况下,我想覆盖 HashSet 的 + 操作,但我不知道如何为现有的 class 实现 + 运算符。 互联网上的所有教程都为新 class 实现了运算符。给定泛型的SetHash,如何进行+运算?
我创建了一个 class 来实现 + 运算符:
public static HashSet<T> operator +(HashSet<T> left, HashSet<T> right) where T : class
{
return left.Union(right);
}
但不工作并给出很多错误(23 个错误)。其中一些是:
.operator +(HashSet, HashSet)' must declare a body because it is not marked abstract, extern, or partial
我想我可以用扩展方法解决这个问题,但我不确定
运算符重载显式仅适用于用户定义的类型。它实际上是1st sentence。但是,您可以创建一个继承自 HastSet<T>
的 class - 毕竟它不是密封的。唯一的目的是添加 function/override.
public class AddAbleHashSet<T> : HashSet<T> {
public static HashSet<T> operator +(HashSet<T> left, HashSet<T> right) where T : class
{
return left.Union(right);
}
}
P.S.: 我不确定函数的 where T : class
限制在做什么。您正在合并两个哈希集。类型 T 对此根本不重要。我实际上不确定那在那里是否有效。