考虑下面的程序产生标记为:CS1720警告错误地用于扩展方法
警告CS1720:由于'string'的默认值为空,Expression总是会导致System.NullReferenceException
我的问题是:为什么编译器会提示会出现NullReferenceException?Extension()
的第一个电话相当于第二个,但第二个不会产生警告。这两个调用应该是安全的,因为this string str
是一个参数,可以安全地为null,如第二行所示。我已经能够在3.5,4.0和4.5编译器上重现这一点,但不能使用Mono 3.0.7。
这只是一个错误,[这里报道](https://connect.microsoft.com/VisualStudio/feedback/details/695362/c-compiler-gives-incorrect-warning-expression-will-always-cause-一个系统用的NullReferenceException换分机的方法)。当时他们并不急于修复它。 – 2014-10-30 21:18:41
你可以添加一个'#pragma warning disable 1720'(有一个很好的评论来描述为什么)。 – clcto 2014-10-30 21:21:44