我正在学习微软文档上的Razor教程,遇到了在HTML辅助程序中使用的lambda表达式:
@Html.DisplayNameFor(model => model.Movie[0].Title))
电影类型为IList< Movie >,其中Movie是本教程中创建的一个类。作者指出:
“DisplayNameFor HTML Helper 检查lambda表达式中引用的Title属性以确定显示名称。Lambda表达式被检查而不是被评估。这意味着当Movie[0]为空或空字符串时,没有访问违规。”
我从直觉上理解检查,但这与以下说法有何不同:
Console.WriteLine(Movie[0].Title)
如果HTML助手看到一个空的列表没有问题,但如果控制台方法看到一个空的列表,将会抛出异常。 我唯一猜测这是如何工作的背后,在幕后有一个try / catch正在工作。