如何使用泛型类型的运算符

时间:2015-11-28 13:15:58

标签: c# generics

我想制作一些像这样的通用方法

   Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
    Dim path As String
    Dim pic As Image
    pic = PictureBox1.Image
    SaveFileDialog1.ShowDialog()
    pic.Save(SaveFileDialog1.FileName)
End Sub

并像

一样使用它
public static T maxValue(T value1, T value2 )       
{
    if(value1>value2)
        return value1;
    else
       return value2;    
}

我的问题是max<string>.maxValue("john","john"); 函数的返回类型应该是什么,以及如何使用maxValue+=<等运算符通用类型?

我知道>没有已定义的数据类型。我需要改进这段代码。

1 个答案:

答案 0 :(得分:3)

你可以这样做。您可以将其用于==><等比较,但不能用于+-等操作。

这里,我们用于>(返回类型为T,与输入类型相同)

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