这是什么<>";方法背后意味着什么

本文关键字:方法 背后 意味着 什么 quot 是什么 lt gt | 更新日期: 2023-09-27 17:51:14

像这样:

var result1 = GetData<double>(someString);
var result2 = GetData<string>(someString);

这是什么意思?

< >

如何返回数据?

public object GetData<Type>(string a)
{
    // How do I know I should return this...
    return 2.2;
    // or this?
    return "2.2";
}

这是什么<>";方法背后意味着什么

您在这里看到的被称为泛型。您可以在MSDN上详细阅读它们。简而言之,您可以在指定方法的同时指定一个Type Parameter。根据类型,可以采用不同的代码路径。阅读链接以获取示例。

在您的特定情况下,返回类型与类型参数无关。你正在处理两件不同的事情。因此,在返回时,您可以使用这两个语句中的任何一个。

return 2.2;

这将返回一个long 2.2。而另一个语句将返回一个CCD_ 3,该CCD_。由于您的退货类型为Object,因此两者都可以接受。虽然你没有在问题中这么说,但你正在寻找的是这样的东西:

//Your generic GetData method
public TEntity GetData<TEntity>(string arg1)
{
    var toReturn;
    //Do some calculations
    return (TEntity)toReturn;
}

现在,当你打这样的电话时:

var t = GetData<string>(string1);

变量CCD_ 6将保持CCD_。如果你打这样的电话:

var t = GetData<int>(string1);

变量CCD_ 8将保持并且CCD_。

这是泛型方法的类型参数。

您要查找的术语是泛型。这些是方法中的类型参数,这意味着方法/类可以以类型安全的方式处理特定类型,而不是回到object的所有类型(这也会对装箱/取消装箱产生性能影响(。

来自C#指南:

泛型允许您定义类型安全的数据结构,而不需要致力于实际的数据类型。这导致性能提升和更高质量的代码,因为您可以重用数据处理算法,而不复制特定类型的代码。

几个快速链接:

  • 。Nutshell中的NET泛型
  • C#泛型简介

一个名为Generic method的方法后面的符号。它将在运行时延迟类型推断。

如果您将调用方法控制为,您的GetData可能会被重写如下

GetData<float>("2.2")
GetData<string>("2.2")

public static T GetData<T>(string a)
        {
            return (T)Convert.ChangeType(a, typeof(T));
        }