当我想将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/

10-17 00:12