Dan*_*ert 11 c# compiler-construction warnings visual-studio-2008
我在一个名为FormattedJoin()的实用程序类中调用了一个方法ArrayUtil.我尝试重命名FormattedJoin()只是Join()因为它的行为类似于.NET,string.Join()所以我认为使用相同的名称是有意义的.但是,当我尝试使用Visual Studio重命名该方法时,我收到此警告:
This member may have compiler generated references
with the same name. Refactoring the member will not
update these references, which may introduce semantic
changes and/or build errors into your code.
我可以很好地重命名该方法,它不会导致生成错误或编译器警告.这样做是否安全,或者我应该避免使用具有此名称的方法?
在看到这个错误之后,我打开了Reflector,看看我是否能够发现.NET是否有内部" ArrayUtil.Join()"或其中的任何变体而且看起来不像它.即使有一个" ArrayUtil.Join()"方法,但不会有一个不同的命名空间使这个问题没有问题?
Sco*_*ski 16
这与LINQ有关.
当您在LINQ查询中使用"Join"关键字时,C#编译器将生成对名为Join的方法的调用.通常,调用将解析为LINQ扩展方法之一.但是,如果使用与LINQ方法相同的signatgure定义自己的方法,则编译器将使用您的方法.警告的目的是让您知道,如果进行额外的重构,则不会修改编译器生成的方法调用.
除非您尝试编写自定义LINQ提供程序,否则忽略该错误是安全的.