这两种方法有什么不同?
public static string Mrthod1(this Controller controller)
{
return GetStringDate(controller, null, null);
}
和
public static string Mrthod1(Controller controller)
{
return GetStringDate(controller, null, null);
}
答案 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);