我有这个功能:
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工作,以前从未见过这种性质的错误。它是什么意思,我可以重新编写函数来获得我想要的东西吗?
答案 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