c# - "null if object is null, or object.member if object is not null"的快捷方式

标签 c# generics

<分区>

我正在尝试编写一个让我这样做的通用扩展方法:

this.startDate = startDateXAttribute.NullOrPropertyOf<DateTime>(() =>
{
    return DateTime.Parse(startDateXAttribute.Value);
});

NullOrPropertyOf() 将返回 null 如果它用于 null 对象(例如,如果 startDateXAttributenull),或者返回 Func 的结果(如果它不为 null)。

这个扩展方法会是什么样子?

最佳答案

没有缩写形式;实现一个是一个相当频繁请求的功能。语法可能类似于:

x = foo.?bar.?baz;

也就是说,如果 foo 或 foo.bar 为空,则 x 为空,如果 foo.bar.baz 都不为空,则为 foo.bar.baz 的结果。

我们考虑过将它用于 C# 4,但它并没有排在优先级列表的首位。对于该语言的 future 假设版本,我们会牢记这一点。

更新:C# 6 将具有此功能。参见 http://roslyn.codeplex.com/discussions/540883讨论设计注意事项。

关于c# - "null if object is null, or object.member if object is not null"的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3817930/

相关文章:

c# - 使用自定义逻辑在 MVC 中对大量数据进行分页

c# - 如何从数据绑定(bind)中的转换器获取依赖属性

Java 泛型扩展列表

c# - 如何访问泛型类中泛型成员的属性

java - Java 中泛型作为函数内的对象

generics - 如何使用涉及泛型的匿名类型调用泛型方法?

c# - 无法连接到Redis服务器

c# - 如何在 Windows 窗体中拖动绘制的形状

c# - 在属性中使用配置设置

c# - 如何基于泛型类型创建泛型实例