Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将运算符与泛型类型一起使用_C#_Generics - Fatal编程技术网

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