我的可选参数出错,它说"需要常量表达式">
如何解决问题?
Private Function Write_Text_To_File(ByVal Text_File As String, _
ByVal Text As String, _
ByVal Append_Text As Boolean, _
Optional Encoding As System.Text.Encoding = System.Text.Encoding.Default) As Boolean
Try : Using TextFile As New IO.StreamWriter(Text_File, Append_Text, Encoding) : TextFile.WriteLine(Text) : End Using
Return True
Catch ex As Exception
'Return False
Throw New Exception(ex.Message)
End Try
End Function
更新:
溶液
#Region " Write Text to File "
' [ Write Text to File Function ]
'
' // By Elektro H@cker
'
' Examples :
'
' Write_Text_To_File("C:Test.txt", "Text", False)
' Write_Text_To_File("C:Test.txt", "Text", True, System.Text.Encoding.UTF8)
Private Function Write_Text_To_File(ByVal Text_File As String, _
ByVal Text As String, _
ByVal Append_Text As Boolean, _
Optional Encoding As System.Text.Encoding = Nothing) As Boolean
Try
If Encoding Is Nothing Then Encoding = System.Text.Encoding.Default
Using TextFile As New IO.StreamWriter(Text_File, Append_Text, Encoding) : TextFile.WriteLine(Text) : End Using
Return True
Catch ex As Exception
'Return False
Throw New Exception(ex.Message)
End Try
End Function
#End Region
如何解决问题?
好吧,您根本不能将Encoding.Default
用作默认参数值。
您可以做的是使用 Nothing
作为默认参数值,并且只需具有:
If Encoding Is Nothing Then
Encoding = System.Text.Encoding.Default
End If
请注意,这确实意味着您不能将Nothing
用于不同的含义。
另一种选择是只使用重载 - 提供一个没有编码参数的版本,该版本只是使用编码参数调用版本,传入Encoding.Default
。
另外两点需要注意:
- 参数名称不遵循 .NET 命名约定;它们应该是驼峰
-
Encoding.Default
通常是一个不好使用的默认值(并且名称不佳(。如果您不指定默认编码,.NET 中的几乎所有内容实际上都使用Encoding.UTF8
作为默认编码;我敦促你效仿。