【问题标题】:Why am I getting 'Trim' is not declared with this VB.NET code?为什么我得到 'Trim' 没有用这个 VB.NET 代码声明?
【发布时间】:2017-04-15 09:14:51
【问题描述】:

我正在尝试编译一个 VB.NET 应用程序。除了“elephant in the room”之外,我还收到 7 个“'Trim' is not declared”这样的代码错误:

...还有一个“'IsNothing' 未声明。由于其保护级别,它可能无法访问。”在这一行:

If IsNothing(memberList) = False Then

我不懂VB,所以可能有一个简单的解决方案,但我不知道问题是什么。

【问题讨论】:

  • 为什么不使用 NET 版本的 Trim?属于字符串类的那个? addr.Trim()
  • 您可能没有包含 Microsoft.VisualBasic 命名空间。可能是这种情况,因为它也会阻塞IsNothing。酷孩子使用 NET 对应物

标签: vb.net visual-studio-2013 trim


【解决方案1】:

Trim 函数需要从程序集 Visual Basic 运行时库(在 Microsoft.VisualBasic.dll 中)中对 Microsoft.VisualBasic 的引用

通常最好使用字符串类中的原生 Trim 方法,而不是添加对此程序集的引用(主要用于帮助移植旧的 VB6 应用程序)

mail.CC.Add(addr.Trim())

还要注意 string.Trim 会删除其他空白字符作为制表符,而 Microsoft.VisualBasic 函数不会。

【讨论】:

  • 酷;消除了这六个错误;我仍然有一个“IsNothing”和旧的“Object Ref”一个。但这回答了我的问题,所以我会尽快将其标记为答案(太平洋标准时间 8 分钟/1:50)。
  • IsNothing ==> Is Nothing(不是函数)@B.ClayShannon
  • 当我用空格分隔它们时,它确实阻止了之前的 err msg,但它带来了两个新的:非法调用表达式或索引表达式。 -and: "表达式预期"
  • If memberList IsNot Nothing Then ...@B.ClayShannon 这不是一个函数
  • @Plutonix:是的,最后一次做到了;我想知道为什么它曾经奏效......?!?无论如何,我认为它曾经做过......
【解决方案2】:

您必须使用addr.Trim 而不是Trim(addr)

在此MSDN article 中了解有关Trim 的更多信息

你应该使用

If not memberList Is Nothing Then

代替

If IsNothing(memberList) = False Then

或者

你必须导入Microsoft.VisualBasic命名空间

【讨论】:

    【解决方案3】:

    如果您使用Left()Mid()Right() 字符串函数,您可能会发现转换它们也更容易:

    Left(t, l) 变为 t.Substring(0, l)

    Mid(t, s, l) 变为 t.Substring(s-1, l)

    Right(t, l) 变为 t.Substring(t.Length - l)

    LeftRight 通常是属性,会阻止您使用旧的 VB 字符串函数。

    【讨论】:

      【解决方案4】:

      String.Trim 不带字符串参数。它返回一个新字符串,其中删除了当前 String 对象中一组指定字符的所有前导和尾随出现。

      应该是……

       addr.Trim()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多