Есть ли способ объединить строку с char как const? - PullRequest
4 голосов
/ 27 февраля 2012

Если я попытаюсь

const char NoChar = (char)8470; //№
const char TmChar = (char)8482; //™
const string IdDisplayName = "Clements" + TmChar + ' ' + NoChar;

, он выдаст ошибку компиляции:

Выражение, присваиваемое '{0}', должно быть постоянным

Насколько я понимаю, эта ошибка возникает из-за того, что когда char является причиной, потому что оператор конкатенации строк (+) внутренне вызывает ToString для связанного объекта.

Мой вопрос: есть лиспособ (неуправляемый? Tongue) сделать это.

Мне нужно передать эту константу в качестве атрибута, и она должна быть сгенерирована на клиенте.

Более уродливый обходной путь (увидим, на чем уродливеев ваших ответах ...) это подкласс этого атрибута (который запечатан, должен будет выполнить некоторую декомпиляцию и копировать-вставить работу), и встраивание его как неконстантного будет возможно.

Ответы [ 2 ]

6 голосов
/ 27 февраля 2012

Вы можете указывать значения символов Юникода непосредственно в строке с помощью экранирования \u. Так что const string IdDisplayName = "Clements\u2122 \u2116"; должен получить то, что вы хотите.

3 голосов
/ 27 февраля 2012

Я предполагаю, что просто:

const string NoChar = "\x2116"; //№ - Unicode char 8470
const string TmChar = "\x2122"; //™ - Unicode char 8482
const string IdDisplayName = "Clements" + TmChar + " " + NoChar;

Это неприемлемо?

...