【问题标题】:VB.NET error message - "Option Strict On disallows implicit conversions from 'Object' to 'String'"VB.NET 错误消息 - “Option Strict On 不允许从 'Object' 到 'String' 的隐式转换”
【发布时间】:2011-07-05 11:46:06
【问题描述】:

我的VB.NET 程序有错误。我尝试了各种演员表等,但它不能解决问题 - 所以我很不情愿地在这里发布它,看看是否有其他人有类似的问题。

错误信息

Error 1 Option Strict On 不允许从 'Object' 到 'String' 的隐式转换。

代码

Private DS As New DataSet ' Languages
Function TransTxt(ByVal Frm As String, ByVal Item As String) As String

    Dim language As String
    Select Case My.Settings.Language
        Case 0 : language = "en" ' English
        Case 1 : language = "fr" ' French
        Case 2 : language = "it" ' Italian
        Case 3 : language = "sp" ' spanish
        Case 4 : language = "pt" ' portuguese
        Case 5 : language = "de" ' german
        Case 6 : language = "du" ' dutch
        Case Else : language = "en" ' English
    End Select


    Try 'ONE of these rows is the error
        Dim DR() As DataRow = DS.Tables(Frm).Select("Tag = '" & Item & "'")
        Return DR(0).Item(language) 
        Catch ex As Exception 
          Return "- error -" & Item
    End Try 
End Sub

【问题讨论】:

  • 调试的一般提示:删除 Try-Catch。然后 Visual Studio 将中断真正导致错误的行。此外,您不应该将错误消息作为函数的返回值返回——这就是 Exceptions 的用途。只需让(意外的)异常在您的函数树中冒泡,并且只在最顶层处理它。
  • @Heinzi - 这是一个编译错误。
  • @Hans: 嗯.. 当然,对,对不起。我猜想 try 块开头的注释“ONE of these rows is the error”以及 OP 没有说明错误发生在哪一行的事实让我草率地阅读了这个问题。

标签: vb.net


【解决方案1】:

Return DR(0).Item(language) 是我的猜测。

CASTSTRING 类型或在末尾使用 Return DR(0).Item(language).ToString()

【讨论】:

  • 我建议使用强类型DR(0).Field(Of String)(language)。如果那不可用(.net DirectCast 进行演员表:这清楚地表明我们知道它是一个字符串(并且我们不想要转换发生)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2019-06-01
  • 2012-09-04
相关资源
最近更新 更多