元注释:不可能搜索“this”这个词。
我刚刚在 ASP.NET 中遇到了一个this
需要关键字的奇怪场景。但这不是为了解决局部变量和实例变量之间的问题,就像您在构造函数中看到的那样。
Microsoft.Web.Mvc 包含一个名为 的类ControllerExtensions
,我正在使用RedirectToAction(Expression<Action<TController>> action)
重载。也许这很特别,因为重载是一种扩展。
RedirectToAction(c => c.Index())
不会编译,它说Cannot convert lambda expression to type 'string' because it is not a delegate type
. 现在这听起来对我来说就像它认为我正在使用第一个带字符串的重载。
this.RedirectToAction(c => c.Index())
编译得很好。我也可以静态调用它,this
作为第一个参数传递。
为什么编译器无法确定我正在寻找接受表达式的重载并使用它?因为该方法需要一个动作的表达式,而不仅仅是一个动作,所以必须涉及。完全不懂 Expressions 命名空间,所以不知道使用这个参数类型的目的。
不管#1的答案如何,为什么简单地添加可以
this
解决所有问题?