天天看點

2018-12-25-dot-net-double-數組轉-float-數組

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);
            }