C#调用ToString方法提示无带1个参数的重载如何解决
问题原因
该报错通常由以下两种场景触发:
- 项目使用的.NET Framework版本低于4.0:
TimeSpan.ToString(string format)带单个格式参数的重载是.NET Framework 4.0才新增的API,低版本框架中不存在该重载。 - 计算结果为可空
TimeSpan?类型:可空值类型直接调用带参数的ToString方法会触发该错误,需要先访问可空类型的Value属性再格式化。
解决方案
场景1:.NET Framework版本低于4.0
方案1:升级框架版本
将项目的目标框架升级到.NET Framework 4.0及以上,即可直接使用原写法。
方案2:手动格式化字符串
如果无法升级框架,可以通过手动拼接的方式实现相同效果:
TimeSpan remainTime = TimeSpan.FromMinutes(60) - (DateTime.Now - startTime); blTimer.Text = string.Format("{0:00}:{1:00}:{2:00}", remainTime.Hours, remainTime.Minutes, remainTime.Seconds);
场景2:结果为可空TimeSpan?类型
先判断可空对象是否有值,再调用格式化方法:
TimeSpan? remainTime = TimeSpan.FromMinutes(60) - (DateTime.Now - startTime); blTimer.Text = remainTime.HasValue ? remainTime.Value.ToString(@"hh\:mm\:ss") : "00:00:00";
小提示:格式字符串前加@可以避免写转义用的双反斜杠,代码可读性更高
内容的提问来源于stack exchange,提问作者ThatGuuy
相关产品推荐
相关产品推荐

