【发布时间】:2013-06-03 08:27:16
【问题描述】:
为什么不能给扩展方法的this参数默认参数值?
public static User CheckLogin(this User user = null)
{
...
}
错误 108 无法为 'this' 参数指定默认值
但是,当我像下面这样写时,编译成功了。
public static User CheckLogin([DefaultValue(null)]this User user)
{
...
}
谁能解释为什么MS限制第一种默认参数分配而允许第二种?
【问题讨论】:
-
我想说扩展方法需要与对象的实例相关联,因此默认的
this似乎没有任何意义。为什么要默认this? -
@Bazzz 我只是想知道为什么 VS 没有显示任何编译错误。我知道它不能用 null 调用。
-
@SenJacob 实际上,您可以调用扩展方法将 null 项,因为编译器将其更改为静态方法调用。
User u = null; u.CheckLogin();。我倾向于在我的扩展方法中对this进行空检查以避免出现冲突。 -
@AdamHouldsworth 感谢您指出这一点。
标签: c# oop c#-4.0 extension-methods default-value