我有一个名为Stat的通用类:
public class Stat<T>
{
public string Name;
public T Value;
public Stat(string statName = "Stat")
{
Name = statName;
}
public Stat(T val)
{
Value = val;
}
}
我想重载+运算符,以便我可以组合两个统计数据,并获得一个带有组合值的stat对象(和返回的stat对象的名称相同)。
我的想法是:
public static Stat<T> operator+ (Stat<T> stat1, Stat<T> stat2)
{
Stat<T> result = new Stat<T>();
//result.Value = stat1.Value + stat2.Value; //<- doesnt work
return result;
}
但是,正如您所看到的,我无法组合两个stat对象的值。当我尝试将where子句添加到此函数时,如下所示:
public static Stat<T> operator+ (Stat<T> stat1, Stat<T> stat2)
where T: struct, IComparable, IComparable<T>, IEquatable<T>
{
Stat<T> result = new Stat<T>();
//result.Value = stat1.Value + stat2.Value; //<- doesnt work
return result;
}
这显然是语法错误;说“无法找到'的类型或命名空间”。
那么,我如何添加两个统计数据的值?另外,如何保持返回的对象的名称完好无损?最后一部分是我最迷失的地方。
编辑:我学会了如何获得不久前添加的统计数据的值,但保持一个完整的名称是问题。
此外,此问题与this one不重复。那个询问如何添加两个对象,导致它们的值被添加到新对象中。通过询问如何保持对象的一个字段相同,这个更进了一步。