-1

我有一个问题..

哪个有更有效的性能?或者哪些需要更少的时间来执行,为什么

session["var"].ToString()

或者

(string)session["var"]
4

5 回答 5

0

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

于 2012-05-17T05:01:41.070 回答
0

ToString() 是一种方法, (string) 是强制转换(显式)。IMO 铸造总是很快

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

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

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

于 2012-05-17T05:01:44.147 回答
0

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

于 2012-05-17T05:02:27.123 回答
0

这两个调用正在执行非常不同的操作(除非您确定该值是字符串)。因此,询问哪个更快并不完全正确。

两种方式都有参数,其中一种会更快,因为这两种操作都需要调用函数。正确的方法是原型和测量。

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

于 2012-05-17T05:07:51.900 回答
0

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

MyObject o = (string)NullObject;

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

Convert.ToString 在内部使用 value.ToString。转换为字符串更便宜,因为它不需要外部函数调用,只需要内部类型检查。将 Object 转换为 String 至少比调用 Object.toString() 快两倍

于 2012-05-17T05:34:40.417 回答