我有一些可为空的值,希望在访问它们的值时避免异常。下面展示了我想要实现的一个示例。我目前有
DateTime? dt = null;
if(dt != null)
{
Console.WriteLine(dt?.ToString("yyyyMMddHHmmss"));
}
但我看到可为空的值有一个value
属性。等价物将是
DateTime? dt = null;
if(dt.HasValue)
{
Console.WriteLine(dt.Value.ToString("yyyyMMddHHmmss"));
}
有什么方法可以把代码简化成这样吗?
DateTime? dt = null;
Console.WriteLine(dt.Value?.ToString("yyyyMMddHHmmss"));
以便它只在dt
不为空时运行.ToString(“YYYYMMDDHMMSS”)
?
使用模式匹配(从C#7.0开始),您可以编写
DateTime? dt = null;
if (dt is DateTime d) {
Console.WriteLine(d.ToString("yyyyMMddHHmmss"));
}
此类型模式起作用,因为null
没有类型,null is t
总是返回false
。如果该值不为null,则将其转换为t
,并赋给t
类型的新变量d
。
您还可以使用字符串插值,特别是如果有不止一个日期,
Console.WriteLine($"Date: {d:yyyyMMddHHmmss}");
您可以删除value
属性,只需在nullable本身上调用它:
DateTime? dt = null;
Console.WriteLine(dt?.ToString("yyyyMMddHHmmss"));
问题内容: 我想使用CSS来呈现两列布局。我正在使用的标记是 有没有一种方法可以使一列的宽度为20px,而一列的宽度为80px? 问题答案: 不,没有办法。 该功能专为在相等的列之间流动的内容而设计。
我正在使用IntelliJ IDEA的代码检查来评估注释。目前我正在使用package,但是如果这有助于解决问题,我也可以切换到另一个实现。 问题是带注释变量的无效性检查是用另一种方法完成的。这是代码检查器无法识别的。 我能让IntelliJ认识到这种情况吗?
问题内容: 客户要求将Oracle DB SQL中的1行拆分为6行。 假设,最初的SQL(具有多个联接的复杂sql等)进入9列: 从X,Y,Z中选择A,B,C,D,E,F,G,H,I。。。(但查询非常复杂) 1)A,B,C,D,E,F,G,H,I 现在,客户要求返回返回到上述模式的每一行,新的输出应如下所示: 1)A,B,C,’D’,D 2)A,B,C,’E’,E 3)A, B,C,’F’,F 4
我正在创建一个在TextView中显示文本的应用程序。由于文本可能非常大,它嵌套在ScrollView中。 在文本变得很大之前,一切都很好——例如整本书的内容。对于如此大的内容,应用程序的用户界面开始没有响应,因为内存需求很大。 解决方案1简单地将书的内容拆分并显示在多个页面中,例如使用ViewPager2。 是的,这肯定行得通。然而,在我的情况下,文本的“无限”垂直滚动是UI设计的决定,因此这个
问题内容: 让我们说我有这样的查询: 通过在各处手动更改字符串,我使用不同的表多次运行此查询。我尝试声明以下内容: 但这似乎不起作用,因为它引发了一个错误,提示我必须先声明为表变量,然后才能使用它。我如何对表名进行模板化,如果可以的话,Intellisense仍然可以使用吗? 问题答案: 您可以将其包装在EXEC语句中,如下所示: 但是不,在这种情况下,智能感知将无法正常工作。 如果您事先知道输出
问题内容: 我有一个.csv文件,如下所示: 我必须从文件中删除重复的电子邮件(整行)(即,上面示例中包含的行之一)。如何仅在字段1(用逗号分隔)上使用?根据,没有列选项。 我尝试了一些东西,但是没有用。 问题答案: 为了独特 所以逗号是定界符 对于关键字段1 测试结果: