2010-10-25 60 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