【问题标题】:Error 95 Overload resolution failed because no accessible 'New' can be called without a narrowing conversion?错误 95 重载解析失败,因为在没有缩小转换的情况下无法调用可访问的“新”?
【发布时间】:2013-08-24 02:57:20
【问题描述】:

我的 vb.net 解决方案中有这段代码,为什么标题中出现错误??

  Dim ids As New System.Collections.Generic.List(Of [String])(comma_seperatedstring.Split(","c))

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    看起来您正在尝试做的是将逗号分隔的字符串拆分为 ID,并将它们存储在字符串类型的通用列表中 - 如果是这种情况,我不知道您可以初始化的方法像这样列出来。

    这样的事情应该可以工作:

    Dim ids As New List(Of String)()
    
    Dim individualIds As String() = comma_separatedstring.Split(",")
    
    For Each id As String in individualIds
    
        ids.Add(id)
    Next
    

    语法可能有点不对(我不经常做 VB.NET),但基本思想是将逗号分隔的字符串拆分为一个数组,然后循环遍历数组并将每个元素添加到泛型列表。

    4.0 中有From 关键字,允许您使用以下语法初始化列表:

    Dim ids As New List(Of String) From { "a", "b", "c" }
    

    但您似乎必须明确列出元素(换句话说,您不能这样做From { comma_separatedstring.Split(",") }

    请参阅Collection Initializers Overview (Visual Basic) 了解更多信息。

    【讨论】:

      【解决方案2】:

      对于我遇到的类似问题,在这行代码中得到“重载解析失败,因为没有可访问的'Split'可以在没有缩小转换的情况下被调用”:

      Dim sStrings() As String = sArg.Split("=", 2)
      

      ".paul._" 的答案在这里解决了:http://social.msdn.microsoft.com/Forums/en-US/bd3c446f-46b2-4a60-9d10-6d31f30b6e7d/what-has-changed-in-split-from-previous-to-current-versions-of-net-or-vb

      新的工作代码是:

      Dim sStrings() As String = sArg.Split(New Char() {"="c}, 2)
      

      【讨论】:

        猜你喜欢
        • 2013-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-16
        • 1970-01-01
        相关资源
        最近更新 更多