爲什麼下面的代碼不能編譯? 如何根據泛型類型是「int」,「bool」,「char」等創建一個泛型方法來調用相應的「BitConverter.GetBytes」重載? 更一般地說,我怎樣才能創建一個基於泛型參數的類型調用非泛型方法的泛型方法?如何使用泛型將參數傳遞給非泛型方法?
using System;
public class Test
{
public static void Main()
{
var f = new Foo();
f.GetBytes(10); // should call BitConverter.GetBytes(int);
f.GetBytes(true); // should call BitConverter.GetBytes(bool);
f.GetBytes('A'); // should call BitConverter.GetBytes(char);
}
}
public class Foo
{
public byte[] GetBytes <TSource> (TSource input)
{
BitConverter.GetBytes(input);
}
}
下面的答案回答了我的問題;在保持編譯時類型安全性的同時不會造成運行時性能損失。所以,我只是爲我的方法應該接受的輸入類型創建自己的重載GetBytes方法,然後做一些工作並最終調用相應的BitConverter.GetBytes。 –