Когда использовать поле char в классе данных - PullRequest
1 голос
/ 02 ноября 2010

Скажем, у меня есть Currency класс

public class Currency
{
    string Name;   // eg "US Dollars"
    string Symbol; // eg "$" 
    decimal Rate;  // eg 1.7
}

Итак, символ - это $, £, .. и т. Д., То есть это будет один символ.* просто потому, что это облегчает перевод в / из представлений, но есть ли причина, по которой я должен использовать char?Каковы преимущества / недостатки использования поля char вместо string?Или это случай, подобный byte / int, где вы должны всегда предпочитать int.

Ответы [ 4 ]

6 голосов
/ 02 ноября 2010

Не все символы валюты являются одним символом: Список символов .

3 голосов
/ 02 ноября 2010

Или это случай типа byte / int, где вы должны всегда предпочитать int.

Во-первых, я бы сказал, что для byte есть допустимые варианты использования.byte занимает меньше места, чем int - если вам нужен только byte, используйте byte.

System.Char имеет пару преимуществ перед string, в правильном случае.Во-первых, это единственный неизменный тип значения.Это более эффективно, если вам нужен только один символ.

Кроме того, использование char в вашем API делает невозможным размещение более одного символа в этом поле.Это может устранить или упростить некоторые из требуемых проверок.

Если действительно имеет смысл, что вы когда-нибудь захотите только один char, я бы сказал, что нужно использовать char.Это упрощает код (меньше проверки), делает его более эффективным (меньше памяти, поскольку у вас нет другой ссылки на объект), и, что наиболее важно, выражает намерение более четко, поскольку вы говорите: «Я просто хочу один символ здесь.«

3 голосов
/ 02 ноября 2010

Ну, если вы используете char:

  • Это гарантированно , чтобы быть точно одним символом, и это очевидно для разработчика (вероятно, самый большой "профи" для char)
  • Он никогда не может быть нулевым (хотя это может быть U + 0000)
  • Вы не сможете обрабатывать символы, которых нет в базовой многоязычной плоскости

Я не знаю, имеет ли это какое-то значение для вас.

1 голос
/ 02 ноября 2010
Здесь допустима строка

, вам просто нужно убедиться, что строка всегда содержит только 1 символ, что означает небольшой дополнительный код на этом конце для предотвращения исключений.На самом деле, вы можете забрать свой яд здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...