using System;
using System.Collections.Generic;
public class MyCollection<T> where T : IAdditionOperators<T, T, T>
{
private List<T> data;
public MyCollection()
{
data = new List<T>();
}
public void Add(T item)
{
data.Add(item);
}
public static MyCollection<T> operator +(MyCollection<T> a, MyCollection<T> b)
{
MyCollection<T> result = new MyCollection<T>();
result.data.AddRange(a.data);
foreach (var item in b.data)
{
if (result.data.Count > 0)
{
result.data[result.data.Count - 1] = result.data[result.data.Count - 1] + item;
}
else
{
result.data.Add(item);
}
}
return result;
}
}
// 处理T类型没有合适+操作符重载的情况
public static class MyCollectionExtensions
{
public static MyCollection<T> Combine<T>(this MyCollection<T> a, MyCollection<T> b)
{
MyCollection<T> result = new MyCollection<T>();
result.data.AddRange(a.data);
result.data.AddRange(b.data);
return result;
}
}
- 首先定义了泛型类
MyCollection<T>
,其中T
约束为实现了IAdditionOperators<T, T, T>
接口,确保T
类型有+
操作符重载。
MyCollection<T>
类有一个List<T>
类型的成员变量data
用于存储数据。
- 重载
+
操作符,将两个MyCollection<T>
对象合并,保证元素顺序正确。
- 对于
T
类型没有合适+
操作符重载的情况,提供了扩展方法Combine
作为默认行为,直接将两个集合的元素追加到一起。