如何解决在 NOT NULL 场景中使用 c# NULL 合并运算符
我正在使用 LINQ 填充一个类,LinkUrl 是我的类的一个字符串属性。只有当属性不为 null 时,我才需要设置一个值,否则不需要分配任何值 目前使用条件运算符 ?:
var formattedData = dataset.Select(p => new ListModel
{
Prop1=....,Prop2=....,...
LinkUrl = string.IsNullOrWhiteSpace(p.LabelUrl) ? "" : "SET MY PROPERRTY TO A VALUE",.....
}).ToList();
我们可以用 C# 的空合并运算符 (??) 或 (?.) 或类似的东西替换它吗??
这样做的目的是为了避免在这么多地方重复使用赋值给“”
我可以用运算符 ??,但只能像下面那样处理 NULL 的情况。
LinkUrl = p.LabelUrl ?? "SET MY PROPERRTY TO A VALUE"
我们可以对非空情况做类似的事情吗
解决方法
我认为最接近 not null 的简写是一组扩展方法
public static T NullOrValue<T>(this T nullable,T value) where T : class => nullable == null ? null : value;
public static T? NullOrValue<T>(this T? nullable,T value) where T : struct => nullable == null ? (T?)null : value;
然后可以在任何可为空的对象上使用
var value = anyObjectOrNullable.NullOrValue(MyValue);
,
您可以使用 Null-coalescing assignment 之一。
但它不会检查空字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。