c# - ToString 没有重载方法需要 2 个参数

标签 c# .net

我正在尝试使用 ToString 方法将日期时间格式化为“c”形式的字符串:

string end = evt.End.DateTime.ToString("c", DataController.culture);

DataController.culture 是对有效区域性对象的引用,evt 是来自 Google Calendar v3 API 的 Event 对象。我确信 DateTime 属于 DatetTime 类,因为调试器在对象类型中是这样说的。

但是我一直收到标题中提到的问题,为什么?甚至是MSDN docs展示如何使用该方法,但不知何故我不能:

Console.WriteLine(date1.ToString("d MMMM", 
                  CultureInfo.CreateSpecificCulture("es-MX")));
// Displays 29 agosto    

最佳答案

API documentation表示您正在尝试访问的属性 ToString()实际上是一个System.Nullable<DateTime> ,它与普通 DateTime 有不同的可用性考虑。为了调用ToString你想要的方法,你需要检索一个具体的 DateTime从提供给您的可为空的结构中获取 - 在您的情况下,通过执行以下操作:

string end = evt.End.DateTime.Value.ToString("c", DataController.culture);

请注意,您通常需要首先通过检查 evt.End.DateTime 来检查可为 null 的对象(例如 HasValue )是否确实具有值。调用之前的属性ToString()或任何其他方法或属性。

关于c# - ToString 没有重载方法需要 2 个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37245838/

相关文章:

c# - 使用 ASP.Net MVC 3 将图像上传到 Amazon S3

c# - 使用递归在 C# 中计算阶乘

.net - 当我定义了隐式强制转换时,为什么Linq Cast <T>操作失败?

.net - 使用 .NET 根据模式验证 XML

c# - 使用 2 个 Get 方法重载 WebAPI Controller

.net - 自定义控件中的组属性

c# - 维护一个排序列表

c# - 创建实体后编辑 CRM 实体。 CRM 动态插件

c# - asp.net中如何使用smtp发送邮件

c# - Dictionary 初始化中出现 KeyNotFoundException 的原因