command.Parameters["@TypeName"].Value = this.sTypeName == null ? DBNull.Value : (object)this.sTypeName;请注意上面这个‘表达式’加粗的部分,若去掉它(object),则会出现下面这个错误:无法确定条件表达式的类型,因为“System.DBNull”和“string”之间没有隐式转换我的问题是:
我将后面的字符串强行转换成 object 类型(应该叫装箱操作吧),虽然可以编译通,但在,在实体类中,作为参数的字段多则会有几十个,
1,这样会在性能上损失多少?
2,还会造成哪些影响?
3,是否建议这样用?

解决方案 »

  1.   

    引用类型转换成OBJECT不算装箱值类型才叫装箱
    这样用不会有太大影响的
      

  2.   

    放心,.Net的性能还没有差到那种地步
      

  3.   

    忘了说明一点:
     上面不加 object 的话,也可以用 if...else.. 若就代码效率来说,我更愿意使用 object,
     这两种方法,哪种执行效率更高一些?
      

  4.   

    不确定
    command.Parameters["@TypeName"].Value = this.sTypeName ?? DBNull.Value;
    行不行?
      

  5.   

    微软出的代码,还不至于out吧放心使用
      

  6.   

    应该是想让两种结果返回的类型一致,Object是所有类型的基类,应该不会有多大性能损失,只是使用的时候要转换下。