在VB.NET中,MS是否需要Right或Left字符串函数的完全限定函数名?

时间:2014-01-04 22:54:06

标签: vb.net string

根据Microsoft文档,要确定str中的字符数,请使用Len函数。如果在Windows窗体或具有Right属性的任何其他类中使用,则必须使用" Microsoft.VisualBasic.Strings.Right"完全限定该函数。

如果我设置" Imports Microsoft.VisualBasic"在表单的顶部,我仍然需要在我的代码中使用完全限定的名称。为什么MS需要这个?

2 个答案:

答案 0 :(得分:3)

因为没有完全限定名称,如果有两个具有相同名称的方法,则编译器不能选择其中一个。因此,您应该注意提供正确提示的问题

为了简化您的输入,您可以在代码文件的顶部添加此版本的Imports statement

Imports VB6 = Microsoft.VisualBasic

然后你可以输入

Dim stringLen = VB6.Len(yourStringVariable)
VB.NET中的

This is the MSDN introduction to Namespaces,特别是在文章的第一行中解释了你的问题避免命名空间冲突

  

.NET Framework命名空间解决了有时称为命名空间的问题   污染,一个类库的开发人员受到阻碍   在另一个库中使用类似的名称。与这些冲突   现有组件有时称为名称冲突。

     

例如,如果您创建一个名为ListBox的新类,则可以使用它   你的项目内没有资格。但是,如果你想使用   在同一个项目中的.NET Framework ListBox类,必须使用   完全限定参考,使参考唯一。如果   引用不是唯一的,Visual Basic会产生一个错误说明   这个名字含糊不清。

顺便说一句,开始使用Right,Left和Len的等效框架方法。 它们仍然只能用于帮助移植旧的VB6应用程序(有时它们的工作方式不同)。在新的应用程序中,我建议使用

string.Substring(start, len)
string.Length

答案 1 :(得分:1)

winform Form(源自Control)具有名为RightLeft的属性。

Public Class Form1
    Inherits Form

    Public Sub Test()

        Dim location_left As Integer = Me.Left
        Dim location_right As Integer = Me.Right

        'Or simply:

        location_left = Left '<- (Referring to Me.Left, not Microsoft.VisualBasic.Strings.Left)
        location_right = Right '<- (Referring to Me.Right, not Microsoft.VisualBasic.Strings.Right)

    End Sub

End Class

因此,您需要使用完整的限定名称。