gpt4 book ai didi

c# - 在早期版本的 C# 中是否有更简洁的方法来编写空传播?

转载 作者:太空宇宙 更新时间:2023-11-03 21:00:52 25 4
gpt4 key购买 nike

我有这门课。

class Property
{
public int? PropertyId { get; set; }
}

我在 C# 6.0 中编写了以下语句

Property p = null;
var id = p?.PropertyId.GetValueOrDefault() ?? 0;

原来 null 传播在 C# 5.0 中不起作用。我将其重写为:

int id = 0;
if (propertyByAddress != null && propertyByAddress.PropertyId != null)
{
id = p.PropertyId.Value;
}

这似乎是不必要的罗嗦。在 C# 5.0 中有更简洁的方法吗?

最佳答案

您仍然可以使用 GetValueOrDefault在 C# 5.0 中,但是是的,您的 null 检查是必需的。

int id = 0;
Property p = null;

if (p != null)
id = p.PropertyId.GetValueOrDefault();

如果您觉得这样“更干净”,您也可以制作 Camilo 指出的扩展方法。

PropertyExtensions.cs

public static int GetPropertyIdValueOrDefault(this Property p)
{
if (p != null)
return p.PropertyId.GetValueOrDefault();

return 0;
}

用法:

Property p = null;
var id = p.GetPropertyIdValueOrDefault();

关于c# - 在早期版本的 C# 中是否有更简洁的方法来编写空传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45680062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com