vb奇数变量使用问题作为文件路径

时间:2011-05-14 10:25:40

标签: vb.net overload-resolution

我有这个功能:

Function WriteTextToFile(ByVal data)
    Dim file As New System.IO.StreamWriter("E:\storage.txt")
    file.WriteLine(data)
    file.Close()
End Function

我一直在尝试调整它,以便文件路径成为我可以传递的变量以允许多个存储文件。像这样:

Function AppendTextToFile(ByVal data, ByVal path)

        Dim file As New System.IO.StreamWriter(path, True)
        file.WriteLine(data)
        file.Close()

    End Function

然而,当函数1工作时,函数2没有 - 我得到了这个无用的错误:

Overload resolution failed because no accessible 'New' can be called without a narrowing conversion:
    'Public Sub New(path As String)': Argument matching parameter 'path' narrows from 'Object' to 'String'.
    'Public Sub New(stream As System.IO.Stream)': Argument matching parameter 'stream' narrows from 'Object' to 'System.IO.Stream'. C:\Users\films ratings\films ratings\Form1.vb

我通常在PHP工作,以前从未见过这种性质的错误。它是什么意思,我可以重新编写函数来获得我想要的东西吗?

2 个答案:

答案 0 :(得分:4)

将变量path声明为String类型,你会没事的。

编译器无法确定应该使用哪个构造函数的重载,因为您将path参数声明为Object(当您没有指定时,这是默认值)。

相反,你应该声明你的第二个函数:

Function AppendTextToFile(ByVal data, ByVal path As String)

答案 1 :(得分:4)

您将path(和data)参数作为对象传递。通过只需 总是强烈输入变量,这里的错误就会消失。

Function AppendTextToFile(ByVal data As String, ByVal path As String)

    Dim file As New System.IO.StreamWriter(path, True)
    file.WriteLine(data)
    file.Close()

End Function