2013-04-16 13 views
0

我得到一個錯誤與可選的參數,它說:「常量表達式是必需的」System.Text.Encoding值

我怎樣才能解決這個問題呢?

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 

UPDATE:

解決方案

#Region " Write Text to File " 

' [ Write Text to File Function ] 
' 
' // By Elektro [email protected] 
' 
' 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 

回答

1

我怎樣才能解決這個問題呢?

嘛,你根本無法使用Encoding.Default作爲默認的參數值。

你可以做的是使用Nothing作爲默認的參數值,只是有:

If Encoding Is Nothing Then 
    Encoding = System.Text.Encoding.Default 
End If 

這並不意味着你不能對不同的含義使用Nothing,你介意。

另一種替代方法是隻使用重載 - 提供一個版本,而不只是其稱爲版本編碼參數,並傳遞Encoding.Default編碼參數。其他

兩點要注意:

  • 你的參數名稱不遵循.NET naming conventions;他們應該是駱駝基地
  • Encoding.Default一般是不好使默認使用(並且名字很差)。如果你沒有指定一個,幾乎所有的.NET實際上都使用Encoding.UTF8作爲默認編碼;我敦促你效仿。
+0

謝謝你這麼多! – ElektroStudios

+0

你能舉個例子說明駱駝套是什麼意思?我不會說英文,也不能翻譯那個詞(谷歌翻譯它就像一個駱駝......) – ElektroStudios

+0

@ElektroHacker:你試過簡單的搜索嗎? http://en.wikipedia.org/wiki/CamelCase(並按照命名約定的鏈接文檔。) –