Как я могу преобразовать char в char * в C#?Как я могу преобразовать char в char * в C#?
Я initializeing объект String, как это:
String test=new String('c');
, и я получаю эту ошибку:
Argument '1': cannot convert from 'char' to 'char*'
Как я могу преобразовать char в char * в C#?Как я могу преобразовать char в char * в C#?
Я initializeing объект String, как это:
String test=new String('c');
, и я получаю эту ошибку:
Argument '1': cannot convert from 'char' to 'char*'
Это немного странно, чтобы инициализировать строку , если вы заранее знаете, что хотите сохранить в нем.
Вы можете просто использовать:
String test="c";
Если у вас есть конкретные потребности, чтобы преобразовать переменную обугленного в строку, вы можете использовать встроенный в ToString()
функции:
String test = myCharVariable.ToString();
String
класса имеет много конструкторов, если все, что вам нужно, это создать строку, содержащую один символ, вы можете использовать следующее:
String test = new String(new char[] { 'c' });
string myString1 = new string(new char[] {'a'});
string myString2 = 'a'.ToString();
string myString3 = "a";
string myString4 = new string('a', 1);
unsafe {
char a = 'a';
string myString5 = new string(&a);
}
использование
String test("Something");
unsafe
{
char c = 'c';
char *ch = &c;
}
Ваш пример имеет String
и ошибка компиляции с помощью одного из конструктора String перегрузок, поэтому я предполагаю, что вы на самом деле просто хочешь массив символов, иначе a String
и, возможно, не char*
.
В этом случае:
char c = 'c';
string s = c.ToString(); // or...
string s1 = "" +c;
Также в наличии:
unsafe
{
char c = 'c';
char* ch = &c;
string s1 = new string(ch);
string s2 = new string(c, 0);
}
Это действительно ответ на вопрос, но я считаю, что автор действительно не хочет преобразовывать 'char' в' char * ':) – serhio
+1, потому что он отвечает на вопрос, не требуя, чтобы ОП оправдывал их потребность в этом подходе сначала , – BenAlabaster
Хотя это синтаксически неверно. Я думаю, вы имеете в виду 'char * ch = & c;' * ch используется для изменения значения в ссылке ... – BenAlabaster
тест String = новая строка (новый символ [] { 'с'});
Если вы жесткое кодирование это, есть причина, вы не можете просто использовать:
String test = "c";
Как насчет:
var test = 'c'.ToString()
Самый простой способ сделать это преобразование из вашего примера просто изменить тип котировок, которые вы используете из одинарных котировок
String test = new String('c');
удвоить кавычки и удалить вызов конструктора:
String test = "c";
не помешает иметь еще один ответ:
string test = string.Empty + 'c';
Я не считаю это очень изящным решением .. Почему бы не использовать 'c'.ToString(), что является самым коротким, самым элегантным и наиболее логичным решением? Очень интересно видеть, сколько здесь разных способов. Здесь можно найти разные варианты. – eWolf
Я собираюсь отбросить это голосование, чтобы вернуть его обратно. Это не так, это просто неэлегантно. Заставляет вас задаться вопросом, почему конструктор String не примет символ. –
@John Ferguson: Спасибо, что голосовали за это. Я знаю, что это не самый эффективный и очень неэлегантный, но суть ответа заключалась в том, чтобы показать еще одну вариацию. Я думал, что downvotes были за * неправильные * ответы, но, похоже, люди не согласны. – Codesleuth
При использовании полукокса в конструкторе Строка, вы должны также дать параметр счетчика, чтобы указать, сколько раз следует добавить, что характер к строке:
String test=new String('c', 1);
См. также here.
char c = 'R';
char *pc = &c;
Там нет перегрузки общественного конструктора String
, который принимает один char
в качестве параметра. Ближайший матч
public String(char c, int count)
, который создает новый String
, повторяющий char c count
раз. Таким образом, вы можете сказать
string s = new string('c', 1);
Есть другие варианты. Существует общественный конструктор String
, который принимает char[]
в качестве параметра:
public String(char[] value)
Это создаст String
, который инициализируется с символами Unicode в value
. Таким образом, можно сказать, что
char c = 'c';
string s = new String(new char[] { c });
Другой вариант сказать
char c = 'c'
string s = c.ToString();
Но самый простой подход, что большинство будет ожидать, чтобы увидеть это
string s = "c";
Что касается преобразования char
в char *
вы не можете безопасно это сделать.Если вы хотите использовать перегрузку общественного конструктора для String
, который принимает char *
в качестве параметра, вы можете сделать это:
unsafe {
char c = 'c';
char *p = &c;
string s = new string(p);
}
Не эти «небезопасные» версии предполагают, что байт после & c - нуль? – 2010-01-13 14:22:45
Используя одиночные кавычки (как в вашем вопросе: 'c'
) означает, что вы создаете char
. Использование двойных кавычек, например. "c"
, означает, что вы создаете string
. Они не являются взаимозаменяемыми типами в C#.
А char*
, как вам известно, это то, как строки в некоторой степени представлены в C++, а C# поддерживает некоторые из соглашений C++. Это означает, что char*
может легко (для программиста, как минимум) быть преобразован в string
в C#. К сожалению, char не является неотъемлемым символом char *, поэтому то же самое нельзя сделать.
Кажется, что Unice не знает C#, и вопрос не страшен, но сколько способов инициализировать строку из char (не очень частой необходимости в .NET), которую мы выяснили. – serhio