C# Timespan.TotalDays-can';t将双精度转换为字符串

C# Timespan.TotalDays-can';t将双精度转换为字符串,c#,.net,datetime,timespan,subtraction,C#,.net,Datetime,Timespan,Subtraction,我在谷歌和这里寻找解决方案,但找不到任何相关的东西。我正试图在两次约会之间找出不同之处。我写了这样的东西 TimeSpan difference = timealarm.Subtract(DateTime.Now); 其中timealarm为DateTime.Now+3小时。这条线看起来不错。我正在尝试使用 MessageBox.Show(difference.TotalMinutes); 但我在标题中提到了一个错误: 无法将类型“double”转换为“string”。Visual Stud

我在谷歌和这里寻找解决方案,但找不到任何相关的东西。我正试图在两次约会之间找出不同之处。我写了这样的东西

TimeSpan difference = timealarm.Subtract(DateTime.Now);
其中timealarm为
DateTime.Now+3小时
。这条线看起来不错。我正在尝试使用

MessageBox.Show(difference.TotalMinutes);
但我在标题中提到了一个错误:

无法将类型“double”转换为“string”。Visual Studio显示错误 这里-差。总分钟


我是.net和c#的新手,我想这很简单。

MessageBox.Show
接受字符串。
difference.TotalMinutes
的类型为
double
。没有从
double
string
的隐式转换,但是您可以调用
ToString
方法:

MessageBox.Show(difference.TotalMinutes.ToString());
这将只使用正在运行的默认区域性来转换值。(例如,它使用逗号还是句点作为小数分隔符取决于您的系统。)

一般来说,当您遇到这样的错误时,您应该检查:

  • 您的“源代码”类型(在本例中为双倍)是您期望的类型吗?如果没有,也许你应该改变你正在计算的东西
  • 您的“目标”类型(在本例中是字符串)是您期望的类型吗?如果没有,也许你应该改变你调用的内容,或者你如何使用这个值

如果两种类型都有意义,那么您需要考虑如何从“源”类型转换为“目标”类型,这取决于上下文。

MessageBox.Show
接受字符串。
difference.TotalMinutes
的类型为
double
。没有从
double
string
的隐式转换,但是您可以调用
ToString
方法:

MessageBox.Show(difference.TotalMinutes.ToString());
这将只使用正在运行的默认区域性来转换值。(例如,它使用逗号还是句点作为小数分隔符取决于您的系统。)

一般来说,当您遇到这样的错误时,您应该检查:

  • 您的“源代码”类型(在本例中为双倍)是您期望的类型吗?如果没有,也许你应该改变你正在计算的东西
  • 您的“目标”类型(在本例中是字符串)是您期望的类型吗?如果没有,也许你应该改变你调用的内容,或者你如何使用这个值

如果两种类型都有意义,那么您需要考虑如何从“源”类型转换为“目标”类型,这取决于上下文。

MessageBox需要一个字符串,而您的值是双精度的 您只需要像这样将double转换为string

MessageBox.Show(difference.TotalMinutes.ToString());

MessageBox需要一个字符串,并且您的值是双精度的 您只需要像这样将double转换为string

MessageBox.Show(difference.TotalMinutes.ToString());

try:MessageBox.Show(difference.TotalMinutes.ToString());当然,我粘贴了错误的链接,这里有一个错误的尝试:MessageBox.Show(difference.TotalMinutes.ToString());当然,我粘贴了错误的链接,这是正确的一个-我想你是在考虑Java,因为它使用了
Double.toString
。我想你是在考虑Java,因为它使用了
Double.toString
。它可以工作,但为什么在这里没有“toString()”?@RobertSzczepański:如果你是指
控制台。WriteLine
调用,控制台的
过载。WriteLine
接受
双精度
。(但我还没有看完整的视频——如果你有一个具体的例子,请确切解释是哪一个。最好是文本形式,但视频中的一段时间会有所帮助——否则我只能猜测是什么让你困惑。)我确信我粘贴了带有精确时间的链接。不管怎么说,你回答了我,这是我的问题,谢谢。它可以工作,但是为什么没有“toString()”它就可以工作呢?@RobertSzczepański:如果你是指
控制台。WriteLine
调用,那么
控制台。WriteLine
接受
双精度
调用时会过载。(但我还没有看完整的视频——如果你有一个具体的例子,请确切解释是哪一个。最好是文本形式,但视频中的一段时间会有所帮助——否则我只能猜测是什么让你困惑。)我确信我粘贴了带有精确时间的链接。不管怎样,你回答了我,那是我的问题,谢谢。