ASP.NET MVC 中出現的 方法 中的 this 關鍵字 用法 (this HtmlHelper helper)

ASP.NET MVC 中出現的 方法 中的 this 關鍵字 用法 (this HtmlHelper helper)html

最近在看ASP.NET 的MVC2編程模型,發現裏面有一種很奇怪的this用法,之前從沒有見過,通過2個小時的翻閱資料查找終於得出告終論,和你們分享一下(可能理解有不全面的地方,但願你們指正)編程

public static string ScheduleEntries(this HtmlHelper helper, ...)ide

這個是我在一個外國論壇上搜到的問題,下面有句回答是:post

The way it works for MVC is that Html in the view is a property of HtmlHelper type on the ViewPage class.this

我大概理解了下,意思好像是說 「把視圖中的HTML做爲一個htmlhelper類型的屬性」,這裏面的Html只什麼一直不是很明白,猜想應該是指只當前對象吧,也就是把當前對象做爲HtmlHelper的一個參數。經過這句話我只能理解到這裏了。url

後來又看到了一個MVC寫的分頁控件,裏面也有一樣的寫法:spa

public static IPagedList<T> ToPagedList<T>(this IEnumerable<T> source, int pageIndex, int pageSize, int totalCount)
{
return new PagedList<T>(source, pageIndex, pageSize, totalCount);
}

而後看了下是怎麼調用該方法的,發現只要是繼承了IEnumerable<T>接口的均可以調用該方法,而且第一個參數隱藏了,這樣就比較清晰了,這裏的ToPagedList<T>(…)方法被添加到繼承接口IEnumerable<T>的類中,此方法帶有this的那個參數則自動默認爲擁有該方法的當前對象,理解了這些就能夠在方法體中大膽的發揮了。code

private IList<Product> allProducts = new List<Product>();
IpagedList<Product> ProductList this.allProducts.ToPagedList(currentPageIndex, defaultPageSize)

上面兩行代碼是對如何調用擁有this關鍵字方法的舉例,但願能給你們起到幫助,幫助你們理解。有不對的地方,也歡迎你們指正.htm

相關文章
相關標籤/搜索