c# - 为什么类型对象中的 1 不能转换为 double

标签 c# listbox

当我想将 1 转换为 double 时,它​​不起作用。当我施放 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。 p>

MSDN: boxing & unboxing

关于c# - 为什么类型对象中的 1 不能转换为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8489124/

相关文章:

c# - 缺少 HttpClient StatusDescription

c# - 为什么这个问题的结果不同?

c# - 删除 List<T> 中的备用元素

mysql - 如何使用 MySQL 将项目添加到列表框

c# - 未在MVVM中填充组合框列表

c# - WPF WrapPanel - 所有项目都应具有相同的宽度

c# - 为什么在派生类中不能像在 C# 中的基类中那样使用事件?

c# - 使用 .NET 核心中的 dapper 批量插入 PostgreSQL

c# - 在WPF中显示所选列表框项目的数据

mysql - Python 列表框在请求之前显示但在请求之后未填充