我有一个问题..
哪个有更有效的性能?或者哪些需要更少的时间来执行,为什么?
session["var"].ToString()
或者
(string)session["var"]
取决于此会话 var 的对象类型,如果您知道它是字符串,则选项 2 是最好的。
ToString() 是一种方法, (string) 是强制转换(显式)。IMO 铸造总是很快
引用类型之间的强制转换操作不会改变底层对象的运行时类型;它只会更改用作对该对象的引用的值的类型。
来源:显式转换
.ToString() 可以从任何对象调用。该方法继承自对象类,可以重载
.(string) 是强制转换,它不是函数调用。当确定对象已经在字符串中时应该使用它,当它无法转换为包含null的字符串时会抛出异常
后者表现更好,只需将值转换为不同的类型。前者涉及方法调用和/或新对象的创建。
这两个调用正在执行非常不同的操作(除非您确定该值是字符串)。因此,询问哪个更快并不完全正确。
两种方式都有参数,其中一种会更快,因为这两种操作都需要调用函数。正确的方法是原型和测量。
请注意,从 Session 访问数据将成为您的主要性能瓶颈是不可能的(尤其是在 SQL 或其他进程外会话状态的情况下)。
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() 快两倍