》object为null则为null;object为null则为object.member“我正在尝试编写一个通用的扩展方法来让我这样做:this.startDate=startDateXAttribute.NullOrPropertyOf(()=>{returnDateTime.Parse(startDateXAttribute.Value);});NullOrPropertyOf()用于空对象(例如,如果startDateXAttribute为空),返回空,如果不为空,则返回Func的结果。这个扩展方法会是什么样子?没有缩写形式;实现一个是一个相当频繁请求的功能。语法可能类似于:x=foo.?bar.?baz;也就是说,如果foo或foo.bar为空,则x为空;如果两者都不为空,则为foo.bar.baz的结果。我们认为它适用于C#4,但这并没有使它排在优先级列表的首位。对于该语言的未来假设版本,我们将牢记这一点。更新:C#6将具有此功能。有关设计注意事项的讨论,请参阅http://roslyn.codeplex.com/discussions/540883。XAttribute类为此提供了一个显式转换运算符:XAttributestartDateXAttribute=//...DateTime?结果=(DateTime?)startDateXAttribute;对于一般情况,最好的选择可能是:DateTime?结果=(obj!=null)?(日期时间?)obj.DateTimeValue:null;这是你想要的?我认为如果你传递一个不可为空的值类型它会崩溃,但是当你使用一个可以为空的类型时它应该可以工作。如果有什么我忽略了,请告诉我。以上就是C#学习教程的全部内容:《如果object为null则为null;如果object为null则为object.member》快捷分享,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注——publicstaticclassExtension{publicstaticTNullOrPropertyOf(thisXAttributeattribute,Funcconverter){if(attribute==null){returndefault(T);}返回converter.Invoke(attribute.Value);}}classProgram{staticvoidMain(string[]args){FuncconvertDT=(stringstr)=>{DateTimedatetime;if(DateTime.TryParse(str,outdatetime)){返回日期时间;}返回空值;};FuncconvertStr=(stringstr)=>{returnstr;};XAttributex=null;Console.WriteLine(x.NullOrPropertyOf(convertStr));Console.WriteLine(x.NullOrPropertyOf(convertDT));XNamet="测试";x=newXAttribute(t,"测试");Console.WriteLine(x.NullOrPropertyOf(convertStr));x=newXAttribute(t,DateTime.Now);Console.WriteLine(x.NullOrPropertyOf(convertDT));}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
