dig*_*dig 8 c# double int casting
以下代码在最后一次分配时失败:
static void Main(string[] args)
{
int a = 5;
object b = 5;
System.Diagnostics.Debug.Assert( a is int && b is int );
double x = (double)a;
double y = (double)b;
}
Run Code Online (Sandbox Code Playgroud)
如果a和b都是int,那么这个错误的原因是什么?
Eri*_*ert 24
这是一个非常常见的问题.有关说明,请参见http://blogs.msdn.com/b/ericlippert/archive/2009/03/19/representation-and-identity.aspx.
片段:
我收到了很多关于C#cast运算符的问题.我得到的最常见的问题是:
Run Code Online (Sandbox Code Playgroud)short sss = 123; object ooo = sss; // Box the short. int iii = (int) sss; // Perfectly legal. int jjj = (int) (short) ooo; // Perfectly legal int kkk = (int) ooo; // Invalid cast exception?! Why?为什么?因为盒装
T只能取消装箱T.(*)一旦它被取消装箱,它只是一个可以像往常一样投射的值,所以双投射效果很好.(*)或
Nullable<T>.
Bro*_*ass 16
取消装箱需要确切的类型 - 您可以这样做:
double y = (double)(int)b;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5229 次 |
| 最近记录: |