當運行此程序我得到含有FN(3,4)行兩個錯誤C#Func鍵<>代表參數轉換錯誤
參數1:不能從 'INT' 轉換到T
參數2:無法從'int'轉換爲T
我認爲類型T將是int,如lambda指定的。但如果是這樣,那麼爲什麼轉換錯誤?我誤解了什麼嗎?
class Program
{
static void DoStuff<T>(Func<T, T, T> fn)
{
Console.WriteLine(fn(3, 4));
}
static void Main()
{
DoStuff((int x, int y) => x + y);
}
}
這工作,如果我改變參數接受整數作爲參數:
class Program
{
static void DoStuff<T>(T x, T y, Func<T, T, T> fn)
{
Console.WriteLine(fn(x, y));
}
static void Main()
{
DoStuff(3, 4, (int x, int y) => x + y);
}
}
我來自一個C++的背景,所以試圖讓我的頭周圍什麼可行,什麼不可行在C#
這是不允許的,因爲對於像'DoStuff'這樣的東西,它是無效的。泛型不像C++模板那樣工作,如果這就是你所想的。 –
hvd