我有一个类和一个包含上述类扩展的模块:
Public Class MyString
End Class
Module StringExt
<Extension()>
Public Function Replace(str As MyString) As String
Return ""
End Function
End Module
在同一个命名空间中,我有另一个使用以下方法的类:
Public Shared Function DoReplace(str As String) As String
Return Replace(str, "bla", "blabla")
End Function
此Replace
旨在引用Microsoft.VisualBasic.Strings.Replace
,并且在没有上述扩展的情况下也可以正常编译。使用该扩展名,将导致编译错误:
Value of type "String" cannot be converted to "MyString"
当存在一个具有匹配的类型签名和可见名称的方法时,为什么编译会在这里失败?
明确使用Strings.Replace()
解决了这个问题,但我不明白为什么首先需要这样做。
感谢您的帮助。