2010-10-25 48 views
2

頁的下面一行的Pro ASP.NET MVC Framework 110沒有意義對我說:臨ASP.net MVC框架的代碼問題

string links = ((HtmlHelper)null).PageLinks(2, 3, i => "Page" + i); 

我不明白什麼是null做在上面的語句?

我無法做到.. HtmlHelper.PageLinks(....)

是對PageLinks方法的擴展方法?

+0

該演員似乎是爲了獲得VS Intellicence,並愚弄服務器編譯器哈哈...結帳,如果你有參考(<%Refernce),你在那裏使用的擴展方法... – pjnovas 2010-10-25 14:41:04

回答

3

它調用HtmlHelper的空「實例」的擴展方法。可能沒有HtmlHelper的作用範圍,作者不能打擾創建一個。 PageLinks方法本身不需要引用HtmlHelper,所以作者有效地通過了null

如果你想擴展方法的簽名:

public static string PageLinks 
    (this HtmlHelper helper, int val1, int val2, Func<someType,string> func) 

它只是意味着參數助手將作爲null傳遞。這是一個奇怪的結構,特別是在一本書中。它有一個非常冒險的氣味。

的通話可能被重述(或許更清晰)爲:

AuthorsHtmlExtensionsClass.PageLinks(null, 2, 3, i => "Page" + i) 

只是讀,雖然我同一本書的MVC2副本,(?它的SportsStore應用程序的結束,右),史蒂芬已經改變代碼爲:

HtmlHelper html=null; 
... 
html.PageLinks(...) 

我想這是一個更清楚一點。

+0

謝謝! ! – 2010-10-25 14:48:42