gpt4 book ai didi

c# - 指定的转换无效 - double 列表到 float 列表

转载 作者:行者123 更新时间:2023-12-04 13:23:40 25 4
gpt4 key购买 nike

所以我在 JSON 文件中存储了一个 float 列表,JSON 列表如下所示:

"RollSize": "[17.5,18.0,19.0,23.5,26.5,35.0,35.5,38.0]"

我使用了一个返回对象列表的方法,因为有多个列表要返回。然后我将对象列表转换为 float 。但是,Specified cast is not valid 在执行此操作时收到异常。但是,如果我将对象列表转换为 double ,它就可以工作。下面是两种方法:

private void DisplayCutOffs(object sender, EventArgs e) {
try {
// Errors here unless I cast to double
_view.CurrentCutOffValues = _systemVariablesManager.ReturnListBoxValues("CutOff").Cast<float>().ToList();
}
catch (Exception ex) {
LogErrorToView(this, new ErrorEventArgs(ex.Message));
}
}

存储库方法:

 public List<object> ReturnListBoxValues(string propertyName) {
if (File.Exists(expectedFilePath)) {
var currentJsonInFile = JObject.Parse(File.ReadAllText(expectedFilePath));
return JsonConvert.DeserializeObject<List<object>>(currentJsonInFile["SystemVariables"][propertyName].ToString());
}
else {
throw new Exception("Setup file not located. Please run the Inital Set up application. Please ask Andrew for more information.");
}
}

但是我注意到,如果我在 foreach 中循环列表,我可以将每个值转换为 float 。所以我不确定这里发生了什么。

有人知道吗?

最佳答案

听起来你正在从 object 转换为(类型),其中(类型)是 floatdouble。这是一个拆箱操作,必须对正确的类型进行。作为 object 的值,知道它是什么 - 如果您不正确地将其拆箱,则会抛出此异常(警告:如果您将它拆箱到某个东西,则有一点回旋余地大小相同且兼容 - 例如,您可以将 int 枚举拆箱为 int 和 v.v.)。

选项:

  • 坚持使用 object,但要知道数据是什么并正确拆箱 - 也许在拆箱后 进行转换,即 float f = (float)(double )obj;(这里的(double)objectdouble的拆箱;(float)doublefloat 的类型转换)
  • 测试对象类型/使用Convert.ToSingle
  • 首先将属性更改为已定义的类型,而不是 object

完整示例:

List<object> actuallyDoubles = new List<object>{ 1.0, 2.0, 3.0 };
List<double> doubleDirect = actuallyDoubles.ConvertAll(x => (double)x); // works
// List<float> floatDirect = actuallyDoubles.ConvertAll(x => (float)x); // fails per question
List<float> floatViaDouble = actuallyDoubles.ConvertAll(x => (float)(double)x); // works
List<float> floatViaConvert = actuallyDoubles.ConvertAll(x => Convert.ToSingle(x)); // works

关于c# - 指定的转换无效 - double 列表到 float 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44741162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com