泛型类型方法

本文关键字:方法 泛型类型 | 更新日期: 2023-09-27 18:00:05

我需要这样的东西的一些实际情况是什么:

  public void Show<FirstType, SecondType>(FirstType first, SecondType second)
  {
      //Do Something
  }

不仅如此:

  public void Show(FirstType first, SecondType second)
  {
     //Do Something
  }

非常感谢

泛型类型方法

这个例子来自框架,但LINQ扩展方法是这样实现的。例如,的签名。其中:

IEnumerable.Where<TSource> (IEnumerable<TSource>, Func<TSource, Boolean>);

这不像您的例子那样有两个类型参数,但显示了一个很好的用例。"Where"不是特定于类型的,因为后面给出的谓词使用了相同的类型参数,所以在执行比较时可以获得类型安全性。

对于每一种可能的类型,这比a.Where要好得多,因此使用泛型。

因为您需要为类似的事情创建另一个方法,在某些情况下可能是重复的。为了避免重复逻辑,当类型有一些共同行为时,可以使用泛型。此外,它是类型安全的,因此在使用泛型时不需要装箱/取消装箱。

public void Show(ThirdType third, FourthType fourth)
  {
     //Do Something
  }

我可以简单地使用泛型,例如,比较相同类型的两个变量并根据等式返回true或false的方法:

public static bool Equals<T>(T Variable1, T Variable2)
{
    return Variable1.Equals(Variable2);
}

该方法现在可用于任何参数类型。T代表类型,通常是这样写的,但不一定。使用此类,您可以比较在主方法中定义的任何类型的相等性,而无需在方法内部装箱/取消装箱类型。此外,一旦在主方法中使用了相等比较方法,它就不会受到错误类型输入的影响。使用这种方法的例子如下:

public static void Main(string[] args)
{
    if (VarCompare<int>(10, 10))
    {
        Console.WriteLine("Inputs are equal.");
    }
    else
    {
        Console.WriteLine("Inputs aren't equal.");
    }
}

只需将if条件更改为VarCompare<string>("A", "B"),就可以比较两种字符串类型而不是整数。

当您想要具有不同类型的两个通用参数时,一个很好的例子是Dictionary<TKey, TValue>

http://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx