C# 如何将运算符与泛型类型一起使用
我想做一些像这样的通用方法C# 如何将运算符与泛型类型一起使用,c#,generics,C#,Generics,我想做一些像这样的通用方法 public static T maxValue(T value1, T value2 ) { if(value1>value2) return value1; else return value2; } 像这样使用它 max<string>.maxValue("john","john"); max.maxValue(“约翰”、“约翰”); 我的问题是maxValue函数的返回
public static T maxValue(T value1, T value2 )
{
if(value1>value2)
return value1;
else
return value2;
}
像这样使用它
max<string>.maxValue("john","john");
max.maxValue(“约翰”、“约翰”);
我的问题是maxValue
函数的返回类型应该是什么,以及如何将+
、=
、
等运算符与泛型类型一起使用
我知道
T
没有定义的数据类型。我需要对这段代码进行改进。您可以这样做。这可以用于比较,如==
,
,
(返回类型为T,与输入类型相同)
用于比较,请使用
value1.与(value2)>0进行比较
,但不能用于加减。您可以改为使用动态类型,这可能会导致运行时错误。@JameyD这是不正确的,泛型方法无权访问泛型类型参数上的运算符。正如ArghyaC的回答所示,最好的办法是要求i可比较
。@ArghyaC您在这里的编辑不好。不要在问题标题中添加标签。@DavidG-hmm…我在页面上遵循了这个示例-“好:如何根据PHP中的会话数据将用户重定向到不同的页面?”我会说这更便于搜索。@ArghyaC-from:您不应该在标题中强制添加标签。+
,没有快速解决方案,-
像这样。你可以查一下
public static T maxValue<T>(T value1, T value2) where T : IComparable<T>
{
if (value1.CompareTo(value2) > 0)
return value1;
else
return value2;
}
var maxInt = maxValue(3, 7); //=> 7
var maxDouble = maxValue(34.89d, -9.6d); //=> 34.89