无法将“System.Single”类型的对象转换为“System.Int32”类型

cas*_*las 5 c#

我对收到以下错误感到困惑:

Unable to cast object of type 'System.Single' to type 'System.Int32'.
Run Code Online (Sandbox Code Playgroud)

我正在获取数据并按如下方式迭代它们:

public MyFault
{

   public int fault_throw { get; set; }

}

 protected List<MyFault> myfaults = new List<MyFault>();
 foreach (var package in packages2)
    {
       // the following line throws an error
      myfaults.Add(new MyFault {fault_throw=(int)(package["fault_throw"])});
    }
Run Code Online (Sandbox Code Playgroud)

Iss*_*ber 6

System.Single 是单精度浮点数。我认为它在包 ["fault_throw"] 中作为对象装箱。而且您不能将浮点数拆箱为 int。Convert.ToInt32()如果要将装箱浮点数转换为整数,可以使用该方法。

  • _“您不能将浮点数转换为整数”_——当然可以。您不能做的是将“float”拆箱为“int”。不幸的是,OP 没有提供足够好的代码示例,但根据报告的错误,我假设 `package["fault_throw"]` 返回类型 `object`。如果它返回类型 `float`,则转换将起作用。 (2认同)
  • _"float s = 2.8F; object f = s; int a = Convert.ToInt32(f); ...它有效"_ - 我从来没有说过它没有。我对你使用“必须”这个词有异议。我看到您也编辑了您的答案以解决该错误。谢谢你纠正这个问题。 (2认同)