C ++ CString эквивалент в C # - PullRequest
8 голосов
/ 10 ноября 2010

Что такое C# эквивалент для MFC CString?

Ответы [ 3 ]

10 голосов
/ 10 ноября 2010

Возможно System.String. Но в целях предоставления более полезной информации:

  • System.String экземпляры являются неизменяемыми. Конкатенация / подстрока / etc фактически создает новые строковые объекты, поэтому использование строкового экземпляра в качестве буфера для создания выходных данных - действительно плохая идея, на случай, если вы собираетесь это сделать. Думайте о System.String как const CString.
  • System.Text.StringBuilder используется для создания и манипулирования строковым содержимым. У него есть .ToString() метод, который вы можете вызвать, чтобы превратить его содержимое в правильную строку.
  • Вы можете использовать char[] в качестве альтернативы для строителя строк, если вы точно знаете, как долго будет создаваться строка, но даже в этом случае вы можете использовать new StringBuilder(length), чтобы указать начальную емкость по умолчанию. Затем вы можете использовать соответствующие методы добавления без необходимости держать переменную индекса. (StringBuilder делает это для вас.)

Как Билли упоминал в другом ответе на этот вопрос, в C # есть ключевое слово string, которое по сути является ярлыком для типа System.String. И то, и другое полностью эквивалентны, хотя большинство кодировщиков LART вас, если вы используете заглавную форму.

2 голосов
/ 10 ноября 2010

Вы знаете, CString не совсем яркий пример правильного оформления ОО. MS продолжала добавлять функции-члены к нему, пока он не стал похож на швейцарский армейский нож ... хотя все еще отсутствовали важные функции.

Все, что вы можете сделать с CString, лучше сделать с неизменным 'System.String` и рядом вспомогательных классов.

2 голосов
/ 10 ноября 2010

Вы можете попробовать использовать String и посмотреть, поможет ли это.

...