這個問題泛型方法是特別爲約通用方法(未類)。與約束與非通用方法
是什麼下面的兩個語句之間的區別?
public bool MyMethod<T>(T t) where T : IMyInterface {}
public bool MyMethod(IMyInterface t) { }
第一語句定義了一個通用的方法和約束的類型,第二個是一個非通用的方法和指定參數的類型。爲什麼你會用另一個呢?
或者類似的例子:
public class LibraryItem
{
public string Title;
public int Stock;
}
public void CheckIn<T>(T item) where T : LibraryItem
{
item.Stock += 1;
}
public void CheckIn2(LibraryItem item)
{
item.Stock += 1;
}
再次,這將是使用通用版在非通用版本的優勢在哪裏?
在你的情況下,幾乎沒有。 – SLaks
您是否也會好奇公共T GetItem(int id)的優勢?其中T:IMyInterface {}?或者您是否理解這一點? –
mason
@mason我得到那個,如果一個泛型值被返回,它就更有意義。 –