我将我的类设为泛型。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
is notT StreetCode
- CSharpieStreetcode2
和streetCode
都与类型T
兼容。这里只有一个T
类型 - 它不像ToString
是引入新类型参数的泛型。 - Jon Skeet