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; они должны быть camelCased
  • Encoding.Default обычно плохой по умолчанию использовать (и плохо названный). Практически все в .NET фактически использует Encoding.UTF8 в качестве кодировки по умолчанию, если вы ее не укажете; Я призываю вас последовать этому примеру.
+0

спасибо, так много! – ElektroStudios

+0

Можете ли вы привести мне пример того, что означает кожу верблюда? Я не говорю по-английски и не могу перевести это слово (Google переводит его буквально как верблюд ...) – ElektroStudios

+0

@ElektroHacker: Вы попробовали простой поиск? http://en.wikipedia.org/wiki/CamelCase (И следуйте связанной документации для соглашений об именах.) –