我正在尝试编写一个通用扩展方法,让我可以这样做:
this.startDate = startDateXAttribute.NullOrPropertyOf<DateTime>(() =>
{
return DateTime.Parse(startDateXAttribute.Value);
});
NullOrPropertyOf()
会回来null
如果它用在null
对象(例如,如果startDateXAttribute
was null
),或者返回 a 的结果Func
如果它不为空。
这个扩展方法会是什么样子?
没有简短的形式;实现一个是一项相当频繁要求的功能。语法可能类似于:
x = foo.?bar.?baz;
也就是说,如果 foo 或 foo.bar 为 null,则 x 为 null;如果它们都不为 null,则 foo.bar.baz 的结果为 null。
我们考虑将其用于 C# 4,但它并没有排在优先级列表顶部附近。我们会在假设的该语言的未来版本中记住这一点。
更新:C# 6 将具有此功能。看http://roslyn.codeplex.com/discussions/540883讨论设计考虑因素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)