我的代碼中有一個操作方法如下:爲什麼我的外部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