【发布时间】:2018-04-17 14:06:46
【问题描述】:
我让我的类通用。T - 可以是字符串或整数。
我有这个要素类:
public class Feature<T>// : IComparable
{
public T CurrentFeatureCode { get; set; }
public T StreetCode1 { get; set; }
public T BuildingNumber1 { get; set; }
public string BuildingLetter1 { get; set; }
public T StreetCode2 { get; set; }
public T BuildingNumber2 { get; set; }
public string BuildingLetter2 { get; set; }
public double CoordinateX { get; set; }
public double CoordinateY { get; set; }
public string Filter { get; set; }
public string ToString(T streetCode)
{
return StreetCode2 == streetCode ? String.Format("{0}{1}", BuildingNumber2, BuildingLetter2) : String.Format("{0}{1}", BuildingNumber1, BuildingLetter1);
}
}
如您所见,我在 Feature 类中有 ToString 方法,用于比较两个值:
StreetCode2 == streetCode ? String.Format("{0}{1}", BuildingNumber2, BuildingLetter2) : String.Format("{0}{1}", BuildingNumber1, BuildingLetter1);
我在这一行得到错误:
Error 11 Operator '==' cannot be applied to operands of type 'T' and 'T' .
我的问题是如何比较两个 T 类型的值?
【问题讨论】:
-
int streetCode不是T StreetCode -
@CSharpie 感谢这是错误
-
您无法比较它们,因为 T 可能属于不同的类型。当然,如果每种类型都可能在它的任何一侧,则不能使用
==。 -
你如何使用这个类的代码在哪里?你是如何关闭通用的?那是重要的部分,你还没有展示出来。
T是什么? -
@ZoharPeled:嗯,可以存在子类关系,但
Streetcode2和streetCode都与T类型兼容。这里只有一个T类型 - 它不像ToString是泛型引入新的类型参数。