【发布时间】:2010-11-03 15:22:27
【问题描述】:
/*I have defined Extension Methods for the TypeX like this*/
public static Int32 GetValueAsInt(this TypeX oValue)
{
return Int32.Parse(oValue.ToString());
}
public static Boolean GetValueAsBoolean(this TypeX oValue)
{
return Boolean.Parse(oValue.ToString());
}
TypeX x = new TypeX("1");
TypeX y = new TypeX("true");
//Method #1
Int32 iXValue = x.GetValueAsInt();
Boolean iYValue = y.GetValueAsBoolean();
//Method #2
Int32 iXValueDirect = Int32.Parse(x.ToString());
Boolean iYValueDirect = Boolean.Parse(y.ToString());
不要被 TypeX 说我应该在 TypeX 中定义那些方法而不是扩展名而得意忘形)我无法控制它(我定义的实际类在 SPListItem 上。
我想将 TypeX 转换为 Int 或 Boolean,这个操作是我在代码中很多地方都在做的一件常见的事情。我想知道这是否会导致性能下降。我尝试使用 Reflector 解释 IL 代码,但并不擅长。对于上面的示例,可能不会有任何性能下降。一般来说,我想知道在使用扩展方法时对性能的影响。
【问题讨论】:
-
唯一的性能损失是在对象类型上扩展时,但这并不特定于扩展方法。在这里查看埃里克的答案stackoverflow.com/a/7652359/661933