title | author | date | CreateTime | categories |
dot net double 數組轉 float 數組 | lindexi | 2018-12-25 09:27:46 +0800 | 2018-04-12 15:21:23 +0800 | C# dotnet |
本文告訴大家如果遇到 double 數組轉 float 數組千萬不要使用 Cast ,一般都使用 select 強轉。
最近在開發Avalonia ,有大神告訴我,下面的代碼可以這樣寫
dashes = pen.DashStyle.Dashes.Select(x => (float)x).ToArray();
修改為
dashes = pen.DashStyle.Dashes.Cast<float>.ToArray()
Improve tiny performance
但是實際上不能這樣寫,因為 cast 無法轉換 float 和 double 因為不存在一個類同時繼承 float 和 double ,是以如果使用這個方法轉換,就無法運作
System.InvalidCastException:“Unable to cast object of type 'System.Double' to type 'System.Single'.”
是以建議的方法是使用 select ,在裡面強轉。
嘗試運作下面代碼
List<double> titHruxvrvaa = new List<double>()
{
1d,
2d,
3d
};
var traStqjq = titHruxvrvaa.Cast<float>().ToArray();//System.InvalidCastException:“Unable to cast object of type 'System.Double' to type 'System.Single'.”
foreach (var temp in traStqjq)
{
Console.WriteLine(temp);
}