簡體   English   中英

方法后面的“ <>”是什么意思?

[英]What is this “< >” behind a method means?

像這樣:

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 根據類型,可以采用不同的代碼路徑。 閱讀鏈接以獲取示例等。

在您的特定情況下,返回類型與type參數無關。 您正在處理兩種不同的事情。 因此,返回時,可以使用這兩個語句中的任何一個。

return 2.2;

這將返回一個long 2.2。 而另一個語句將返回string "2.2" 由於您的返回類型為Object ,所以都可以接受。 盡管您尚未說出問題,但您正在尋找的是這樣的東西:

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

現在,當您撥打這樣的電話時:

var t = GetData<string>(string1);

變量t將容納一個string 如果您撥打這樣的電話:

var t = GetData<int>(string1);

變量t將保持int

這是泛型方法的類型參數。

您要查找的術語是Generics 這些是方法的類型參數,這意味着方法/類可以以類型安全的方式與特定類型一起使用,而不是退回到所有作為object (這也會對裝箱/拆箱產生性能影響)。

從C#指南中:

泛型允許您定義類型安全的數據結構,而無需提交實際的數據類型。 這將大大提高性能,並提高代碼質量,因為您可以重用數據處理算法,而不必復制特定於類型的代碼。

一些快速鏈接:

在稱為“通用方法”的方法之后的符號。 它將在運行時推遲類型推斷。

只要您將調用方法控制為以下方式,您的GetData可能會被重寫如下:

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


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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM