mpe*_*pen 24 c# linq casting linqpad
也许我疯了,但我认为这是一个有效的演员:
(new int[]{1,2,3,4,5}).Cast<double>()
Run Code Online (Sandbox Code Playgroud)
为什么LinqPad会抛出一个
InvalidCastException:指定的强制转换无效.
?
小智 37
C#允许int直接转换为double,但不int转换object为double.
int i = 1;
object o = i;
double d1 = (double)i; // okay
double d2 = (double)o; // error
Run Code Online (Sandbox Code Playgroud)
的Enumerable.Cast扩展方法的行为类似于后者.它不会将值转换为其他类型,它断言值已经是预期类型,如果不是,则抛出异常.
您可以尝试(new int[]{1,2,3,4,5}).Select(i => (double)i)获取值转换行为.