我的代码中有一个操作方法如下:为什么我的外部C#函数的参数列表中存在“this”?
catch (Exception e)
{
log(e);
return Content(ExceptionExtensions.GetFormattedErrorMessage(e));
}
的函数调用看起来像这样:
public static class ExceptionExtensions
{
public static string GetFormattedErrorMessage(this Exception e)
if (e == null)
{
throw new ArgumentNullException("e");
}
有人能解释为什么有一个“本”在参数列表的开始?
也许增加一些OP可以这样调用函数的东西:'e.GetFormattedErrorMessage()'。 – Marlon
对不起,如果这听起来像一个愚蠢的问题,但你能猜出它为什么这样编码的任何原因。此外,如果我想将其改为静态方法,我怎么能这样做,哪些是劣势? –
@SamanthaJ扩展方法*是*静态方法,它们可以使用正常的静态方法语法或扩展方法(准实例方法)语法来调用。出于这个原因,我相信,目前的例子不会编译,虽然我没有编译器方便检查。 – phoog