我有一个问题..
哪种表现更有效?或者执行时间较短,为什么?
session["var"].ToString()
或
(string)session["var"]
答案 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()
的两倍