VB.NET错误消息-“;选项Strict On不允许从';对象';至';字符串'&引用;

VB.NET错误消息-“;选项Strict On不允许从';对象';至';字符串'&引用;,vb.net,Vb.net,我的程序有一个错误。我尝试过各种类型的转换,等等,但它无法解决问题-所以我不情愿地将其发布在这里,看看是否还有其他人有类似的问题 错误消息 错误1选项Strict On不允许从“Object”到“String”的隐式转换 代码 返回DR(0)。项目(语言)是我的猜测 要么将转换为字符串类型,要么在末尾使用返回DR(0).Item(language).ToString()。返回DR(0)。Item(language)是我的猜测 CAST到STRING类型,或者在末尾使用返回DR(0).Item(l

我的程序有一个错误。我尝试过各种类型的转换,等等,但它无法解决问题-所以我不情愿地将其发布在这里,看看是否还有其他人有类似的问题

错误消息 错误1选项Strict On不允许从“Object”到“String”的隐式转换

代码
返回DR(0)。项目(语言)
是我的猜测

要么将
转换为
字符串
类型,要么在末尾使用
返回DR(0).Item(language).ToString()

返回DR(0)。Item(language)
是我的猜测


CAST
STRING
类型,或者在末尾使用
返回DR(0).Item(language).ToString()

调试的一般提示:删除Try-Catch。然后VisualStudio将打断真正导致错误的那一行。此外,您不应该将错误消息作为函数的返回值返回——这就是异常的用途。只需让(意外的)异常冒泡出现在函数树中,并仅在最顶层处理它即可。@Heinzi-这是一个编译错误。@Hans:嗯。。当然,对,很抱歉。我猜其中一行的注释“
是try块开头的错误,而OP没有说明错误发生在哪一行,这让我草率地阅读了问题。调试的一般提示:删除try Catch。然后VisualStudio将打断真正导致错误的那一行。此外,您不应该将错误消息作为函数的返回值返回——这就是异常的用途。只需让(意外的)异常冒泡出现在函数树中,并仅在最顶层处理它即可。@Heinzi-这是一个编译错误。@Hans:嗯。。当然,对,很抱歉。我猜这些行中的一行是try块开头的错误,而OP没有说明错误发生在哪一行,这一事实使我草率地阅读了这个问题。我建议使用强类型的
DR(0).字段(字符串)(语言)
。如果不可用(.net<3.5),我会使用
DirectCast
:这清楚地说明了我们知道它是一个字符串(并且我们不希望发生转换)。我建议使用强类型的
DR(0).字段(字符串)(语言)
。如果不可用(.net<3.5),我会使用
DirectCast
:这清楚地说明了我们知道它是一个字符串(并且我们不希望发生转换)。
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