我试图通过添加一个项目来添加列表。
目标使用代码I尝试实现:
List<int> numbers = new List<int>();
numbers += 10;
我尝试了什么。 &#34;运营商+&#34;应该重载+和&#34;这个IList&#34;应扩展通用IList。
public static IList<T> operator +<T>(this IList<T> list, T element)
{
list.Add(element);
return list;
}
然而,它并没有起作用,在2012年的视觉工作室中,红色突显了它。
我究竟做错了什么?这不可能吗?为什么这可以用于标准类而不是泛型类?
答案 0 :(得分:4)
操作符只能在类的定义中重载。您无法使用扩展方法从外部覆盖它们。
此外,至少有一个参数必须与类相同。
所以你能做的最好就是:
public class CustomList<T> : List<T>
{
public static CustomList<T> operator +(CustomList<T> list, T element)
{
list.Add(element);
return list;
}
}
然后您可以使用:
var list = new CustomList<int> { 1, 2 };
list += 3;
Console.WriteLine(string.Join(", ", list)); // Will print 1, 2, 3