太多的扩展方法会降低性能吗?这个怎么运作

时间:2013-11-11 15:13:41

标签: c# .net performance c#-3.0 extension-methods

我是csharp 4的粉丝.. 我已经为字符串对象(.net类型)添加了太多方法作为扩展方法 考虑大约200 这会降低性能吗?

.nets库中添加这些方法是否正确? 实际上扩展方法如何在内部工作..?

2 个答案:

答案 0 :(得分:4)

嗯,无论如何它都不会影响运行时性能。因为“扩展方法”只是编译技巧。在引擎盖下,它们只是静态类中的静态方法。

public static class MyExt
{
    public static void MyExtension(this object obj)
    {
        //Do something
    }
}    
public static void Main()
{
    object obj = new object();
    obj.MyExtension();
    //Above line gets compiled into MyExt.MyExtension(obj);
}

正如您所看到的,obj.MyExtension();被编译为MyExt.MyExtension(obj);,它只是一个方法调用。 无需担心性能

如果你担心性能我会说它不会损害“运行时性能”虽然它可能会或可能不会影响编译时性能,但编译器需要查找当前命名空间中是否定义了任何扩展方法作为导入的命名空间。

但这并不难,因为编译器只需要检查static类。没有图书馆会有很多“静态课程”。

答案 1 :(得分:0)

使用扩展方法没有性能损失,但是存在扩展方法设计错误的问题。这里有一篇很棒的关于扩展方法的做法和不做的文章:The DOS and DONTS of extension methods.