两种方法的区别,一种是这种方法

时间:2014-01-11 21:11:34

标签: c# asp.net-mvc-4

这两种方法有什么不同?

public static string Mrthod1(this Controller controller)
{
    return GetStringDate(controller, null, null);
}

public static string Mrthod1(Controller controller)
{
    return GetStringDate(controller, null, null);
}

2 个答案:

答案 0 :(得分:3)

第一个是extension method

  

扩展方法使您可以向现有类型“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。

它可以使myController.Mrthod1()之类的调用成为可能:

  

扩展方法是一种特殊的静态方法,但它们被称为扩展类型的实例方法。

在第一个方法参数指定您扩展的类型之前

this

  

它们的第一个参数指定方法操作的类型,参数前面是this修饰符。

因此,您的方法是Controller类的扩展方法,并允许您调用它,就像它是所有Controller类(和所有派生类)实例上的实例方法一样。

答案 1 :(得分:1)

public static string Mrthod1(this Controller controller)
{
    return GetStringDate(controller, null, null);
}

是一种扩展方法。这将始终位于静态类中:

public static class MyClass
{
    public static string Mrthod1(this Controller controller)
    {
        return GetStringDate(controller, null, null);
    }
}

允许您执行以下调用:

string myString = controller.Mrthod1();

如果删除了this关键字并且您需要致电Mrthod1,则还需要指定该类:

string myString = MyClass.Mrthod1(controller);
相关问题