所以我将一个float列表存储在一个JSON文件中,这就是JSON列表的样子:
Specified cast is not valid
我使用一个返回对象列表的方法,因为有多个列表要返回。然后我将对象列表转换为浮点数。但是,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.");
}
}
存储库方法:
a = 45LLU * 44LLU * 43LLU * 42LLU * 41LLU * 40LLU;
但是我注意到如果我在foreach中循环遍历列表,我可以将每个值转换为浮点数。所以我不确定这里发生了什么。
有人知道吗?
答案 0 :(得分:2)
听起来你是从object
转换为(类型),其中(类型)是float
或double
。这是取消装箱操作,必须到正确的类型。该值为object
,知道它是什么 - 如果您将其正确拆箱,则抛出此异常(警告:如果您将其拆箱到相同大小的某个位置,则会有一点蠕动空间和兼容 - 例如,您可以将int-enum取消装入int和vv)。
选项:
object
,但要知道数据是什么并正确拆箱 - 也许在取消框后,<{1}}(这里的float f = (float)(double)obj;
是从(double)
到object
的取消框; double
是从(float)
到double
的类型转换float
Convert.ToSingle
完整示例:
object