我收到型別轉換錯誤我在這里做錯了什么?
private static T1 StringToDecimal<T1, T2>(T2 dummydata)
{
var type = typeof(T1);//string
var type2 = typeof(T2);//decimal
Console.WriteLine("Type of T1 is : " type);
Console.WriteLine("Type of T2 is : " type2);
return (T1)Convert.ChangeType(dummydata, typeof(T2), CultureInfo.InvariantCulture);
//System.InvalidCastException: 'Unable to cast object of type 'System.String' to type 'System.Decimal'.'
//calling
//string? _dummydata = "8468.45";
//var getresult_ = StringToDecimal<string, decimal>(_dummydata);
}
https://i.stack.imgur.com/KAOsO.png
Final working code
private static TToConvertTo StringToDecimal<TToConvertFrom, TToConvertTo>(TToConvertFrom dummydata)
{
return (TToConvertTo)Convert.ChangeType(dummydata, typeof(TToConvertTo), CultureInfo.InvariantCulture);
}
uj5u.com熱心網友回復:
你只是混淆了你的通用論點。轉換作業正常,但隨后的演員陣容失敗。
考慮以下使用更新的泛型型別名稱的正確實作,這使得正在發生的事情更加明顯:
private static TToConvertTo StringToDecimal<TToConvertFrom, TToConvertTo>(
TToConvertFrom dummydata)
{
var type = typeof(TToConvertFrom);//string
var type2 = typeof(TToConvertTo);//decimal
Console.WriteLine("Type of T1 is : " type);
Console.WriteLine("Type of T2 is : " type2);
return (TToConvertTo)Convert.ChangeType(dummydata, type2,
CultureInfo.InvariantCulture);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/513881.html
標籤:C#。网仿制药
