我試圖制作一個靜態通用函式,將十進制(數字型別)轉換為二進制字串。
讓我解釋一下。 我知道我必須這樣做:
我知道我必須這樣做。
int number = 12。
string binaryString = Convert.ToString(number, 2) 。
這很簡單,但是我也想用其他的引數型別進行十進制到二進制的轉換,比如bytes,shorts(Int16),longs(Int64)。我知道Convert.Tostring()有所有的多載,我只需要做一些多載,比如:
public static string DecToBinary(short number)
{
return Convert.ToString(number, 2) 。
}
public static string DecToBinary(long number)
{
return Convert.ToString(number, 2) 。
}
//etc。
但是我想用泛型和反射來制作它......。 所以我試著這樣做:
public static string DecToBinary< T>(T number) where T : 結構, IComparable, IFormattable, IConvertible。
{
return (string)typeof(Convert).GetMethod("ToString") 。 Invoke(null, new object[] { number, 2 }) 。
}
但是我在運行時遇到了一個問題,說:
發現不一致的匹配。
并且是有意義的,因為反射使用object作為引數型別,并且不知道我想要什么型別...
有誰能幫我解決這個問題嗎?
uj5u.com熱心網友回復:
檢查Type.GetMethod()的多載,它允許你提供一個引數型別的陣列(Type[])。這應該有助于CLR解決Convert.ToString()方法的正確多載。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/318416.html
標籤:
