从性能的角度来看哪个更正确

时间:2012-05-17 04:53:58

标签: c#

我有一个问题..

哪种表现更有效?或者执行时间较短,为什么

session["var"].ToString()

(string)session["var"]

5 个答案:

答案 0 :(得分:0)

取决于此会话var的对象类型,如果您知道它是一个字符串,则选项2最好。

答案 1 :(得分:0)

ToString()是一个方法,(字符串)是强制转换(Explicit)。 IMO铸造总是很快

  

引用类型之间的强制转换操作不会更改运行时   底层对象的类型;它只会改变值的类型   它被用作对象的引用。   
  资料来源:Explicit Conversions

.ToString()可以从任何对象调用。此方法继承自对象类,可以重载

。(string)是一个演员,它不是一个函数调用。它应该在确定对象已经在string中时使用,当它无法转换为包含null的字符串时会抛出异常

答案 2 :(得分:0)

后者表现更好,只是将值转换为其他类型。前者涉及方法调用和/或新对象创建。

答案 3 :(得分:0)

这两个调用执行的操作非常不同(除非您确定该值是字符串)。所以问哪一个更快是不完全正确的。

由于两个操作都需要调用函数,因此有两种方法可以更快。正确的方法是进行原型和测量。

请注意,从Session访问数据将是您的主要性能botleneck(特别是在SQL或其他进程外会话状态的情况下),这是不可能的。

答案 4 :(得分:0)

当对象为null时,ToString()引发异常。因此,对于object.ToString(),如果object为null,则会引发NullReferenceException。 Convert.ToString()在null对象的情况下返回string.Empty。 (string)cast在null的情况下分配对象。

的情况
MyObject o = (string)NullObject;

但是当你使用o访问任何属性时,它会引发NullReferenceException。

Convert.ToString在内部使用value.ToString。转换为String更便宜,因为它不需要外部函数调用,只需要内部类型检查。将Object转换为String的速度至少是调用Object.toString()

的两倍