可能重复:
C#中的安全导航操作员?
"如果object为null,则为null;如果object为null,则为object.member"的快捷方式
在我的XML处理项目中,我必须浏览链式属性以获得所需的值.例如,obj1.obj2.obj3.obj4.obj....Value.并且可能退出此链中的任何对象为null.
我用Google搜索了"c#中的NullSafe导航"并找到了一些不错的文章.从Post之一,我有了实现自定义扩展的想法.现在我对这个扩展的性能有疑问.我有这3个解决方案.任何人都可以建议我采用哪一种(在性能方面)?
选项1(使用本文中解释的逻辑):
//custom extension method
public static TOutput IfNotNull<TInput, TOutput>(this TInput x, Func<TInput, TOutput> f)
where TInput : class
where TOutput : class
{
return x == null ? null : f(x);
}
//with custom extension method -- Very neat & clean.. but what about performance?
string x = obj1
.IfNotNull(x => x.obj2)
.IfNotNull(x => x.obj3)
.IfNotNull(x => x.obj4)
.IfNotNull(x => x.obj5)
.IfNotNull(x => x.Value);
Run Code Online (Sandbox Code Playgroud)选项2:
//with NullCheck -- probably …Run Code Online (Sandbox Code Playgroud)我们必须将我们的项目与后端Oracle平台集成.这种集成是通过各种Web服务实现的.我有所有这些集成的WSDL和XSD.我需要从这些WSDL和XSD生成DataContracts.
现在的问题是,大多数这些集成共享一些常见的数据类型.我想重复使用它们.
例如,
Integration1: oracle/common/commonDataTypes.xsd
oracle/integration1/someXSD.xsd
oracle/ebo/baseTypes.xsd
Integration2: oracle/common/commonDataTypes.xsd
oracle/integration2/someXSD.xsd
oracle/ebo/baseTypes.xsd
Integration3: oracle/commonDataTypes.xsd
oracle/integration2/someXSD.xsd
oracle/ebo/baseTypes.xsd
在这种情况下,我想在integration1和2之间重用oracle.common.CommonDataTypes.
到目前为止,我已经尝试了WSCF.blue和WSCF.但是这些工具在单个文件夹(和单个命名空间)中生成所有代码而不遵循命名空间.
我想下生成像甲骨文,oracle.commonData,oracle.integration1命名空间类,oracle.ebo等,所以是生成Datacontracts任何方式如下确切的命名空间的符号为XSD文件有哪些?
我有两个DataBase表(SQL CE).甲教师表和甲类表.这两个表具有一对多关系,其中一个教师具有许多类(即,类具有外键teacher_id).在运行时通过C#代码插入(或生成)教师(行)的数量,以及类
在INSERT和SELECT中,以下哪一项更快?