当我想将1转换为两倍时,它不起作用。当我将1.0转换为两倍时,它可以工作。为什么?
我有以下代码:
static void Main(string[] args)
{
ArrayList liste1 = new ArrayList();
liste1.Add(1);
liste1.Add("Hallo");
liste1.Add(2.5);
double num = (double)liste1[0] + (double)liste1[2];
Console.WriteLine(num);
Console.ReadLine();
}
当我将
liste1.Add(1);
更改为liste1.Add(1.0);
时,它可以工作。为什么它与1.0
一起使用而不与1
一起使用?当我首先将liste1 [0]转换为int,然后转换为double时,它也起作用。你能告诉我为什么吗?
谢谢
最佳答案
ArrayList
保存对象。如果添加int
,它将被“装箱”到一个对象中,并且只能被“取消装箱”回int
-不能被“ double
”。
MSDN: boxing & unboxing
关于c# - 为什么不能将类型对象中的1强制转换为 double ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8489124/