为了账号安全,请及时绑定邮箱和手机立即绑定

从分钟转换为毫秒,然后转换为 Int

从分钟转换为毫秒,然后转换为 Int

C#
手掌心 2021-09-19 15:56:43
我正在尝试运行以下转换,这会导致无效的强制转换异常指定的演员表无效settings.ActionTimer = Convert.ToInt32(TimeSpan.FromMinutes((double)ActionTimerComboBox.SelectedValue).TotalMilliseconds);这是什么尝试如下:取 的值ActionTimerComboBox.SelectedValue,在本例中为“13”并将其从 object 转换为 double,以便 TimeSpan.FromMinutes() 可以应用于它。将“13 分钟”转换为毫秒。将 int 更新settings.ActionTimer为毫秒转换值,应为“780000”。我怎样才能做到这一点?
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

除了从转换ActionTimerComboBox.SelectedValue为双倍之外,一切看起来都很好。这也是错误信息所说的。您必须使用以下内容:


string comboSelectedValue = ActionTimerComboBox.SelectedValue;

double selectedVal =0.0;

if(double.TryParse(comboSelectedValue, out selectedVal)){

    settings.ActionTimer = (int)TimeSpan.FromMinutes(selectedVal).TotalMilliseconds;

    Console.WriteLine(TimeSpan.FromMinutes(selectedVal).TotalMilliseconds);

}

else

{

    Console.WriteLine("Error in conversion");

}

工作示例在这里。此链接可能会帮助您了解有关类型转换的更多信息。


查看完整回答
反对 回复 2021-09-19
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

ActionTimerComboBox.SelectedValue 正在返回字符串,您不能将其转换为 double,您应该尝试使用 double.Parse()、double.TryParse() 或 Convert 类,就像您在此处使用的那样。- 抱歉无法发表评论


查看完整回答
反对 回复 2021-09-19
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

此异常来自以下声明:


((double)ActionTimerComboBox.SelectedValue)

对象到双精度转换抛出无效的强制转换异常。要么先将此对象转换为字符串,然后再将其转换为双精度。


((double)ActionTimerComboBox.SelectedValue.toString());

或者,您也可以使用以下代码:


var val = ActionTimerComboBox.SelectedValue;

if (val is IConvertible)

{

 double d = ((IConvertible)val).ToDouble(null);

}


查看完整回答
反对 回复 2021-09-19
  • 3 回答
  • 0 关注
  • 257 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信