[英]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.