Pro ASP.NET MVC Framework第110页的以下行对我没有意义:
string links = ((HtmlHelper)null).PageLinks(2, 3, i => "Page" + i);
我不明白上述陈述中null
做了什么?
我无法做到...... HtmlHelper.PageLinks(....)
PageLinks方法是一种扩展方法吗?
答案 0 :(得分:3)
它在HtmlHelper的null“实例”上调用扩展方法。可能在范围内没有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应用程序的结尾,对吗?),Steven已将代码更改为:
HtmlHelper html=null;
...
html.PageLinks(...)
我认为这有点清楚。