确定一个对象是否是DateTime,而不是作为三进制中的条件为null



我有一个对象数组:

object〔〕myArray

此数组可以包含int、string、DateTime数据类型等。

现在我正在尝试检查myArray中的对象是否为DateTime类型而非null,因此我执行以下三进制:

string strDate = myArray[pos] != null && myArray[pos].GetType() is typeof(DateTime) ? Convert.ToDateTime(myArray[pos]).ToString("dd/MM/yyyy") : string.Empty;

但我从类型(DateTime(开始得到以下错误:

只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句

您可以像一样使用is运算符

具有C#模式匹配功能的解决方案

string strDate = (myArray[pos] is DateTime date) ? date.ToString("dd/MM/yyyy"): string.Empty;

以下方法将适用于旧的C#编译器。不过,我强烈建议转到VS 2019。你的生活会变得轻松很多。。。

var bob = myArray[pos] as DateTime?;
string strDate = bob == null ? string.Empty : bob.Value.ToString("dd/MM/yyyy");

您不需要调用Convert.ToDateTime,因为您已经进行了检查以确保对象是DateTime。此外,您可以使用新的switch表达式以及一些模式匹配,而不是使用三元运算符:

string stDate = myArray[pos] switch
{
DateTime d => d.ToString("dd/MM/yyyy"),
_          => string.Empty
};

相关内容

  • 没有找到相关文章

最新更新