如何在c#中将char转换为char *?

时间:2010-01-13 13:55:23

标签: c#

如何在c#中将char转换为char *?

我正在初始化一个这样的String对象:

String test=new String('c');

我收到了这个错误:

Argument '1': cannot convert from 'char' to 'char*'

14 个答案:

答案 0 :(得分:16)

如果您事先知道要存储在其中的内容,那么初始化字符串有点奇怪。

您可以简单地使用:

String test="c";

如果您特别需要将char变量转换为字符串,则可以使用内置的ToString()函数:

String test = myCharVariable.ToString();

答案 1 :(得分:12)

unsafe
{
    char c = 'c';
    char *ch = &c;
}

你的例子有String和使用其中一个String构造函数重载的编译错误,所以我猜你真的只想要一个字符数组,也就是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);
}

答案 2 :(得分:6)

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);
}

答案 3 :(得分:3)

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,使用value中的Unicode字符进行初始化。因此你可以说

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);
}

答案 4 :(得分:2)

还有另一个答案可以伤害:

string test = string.Empty + 'c';

答案 5 :(得分:1)

String类有很多构造函数,如果您只想创建一个包含一个字符的字符串,则可以使用以下代码:

String test = new String(new char[] { 'c' });

答案 6 :(得分:1)

如果您正在编码,那么您有什么理由不能使用:

String test = "c";

答案 7 :(得分:1)

怎么样:

var test = 'c'.ToString()

答案 8 :(得分:1)

在String构造函数中使用char时,还应该给出一个count参数来指定该字符应添加到字符串的次数:

String test=new String('c', 1);

另见here

答案 9 :(得分:0)

使用

String test("Something");

答案 10 :(得分:0)

String test = new String(new char [] {'c'});

答案 11 :(得分:0)

从您的示例中执行此转换的最简单方法是从单引号更改您使用的引号类型

String test = new String('c');

加双引号并删除构造函数调用:

String test = "c";

答案 12 :(得分:0)

char c = 'R';
char *pc = &c;

答案 13 :(得分:0)

使用单引号(如您的问题所示:'c')表示您正在创建char。使用双引号,例如"c",表示您创建string。这些不是c#中的可互换类型。

你可能知道,char*是字符串在某种程度上用c ++表示的方式,而c#支持c ++的一些约定。这意味着char*可以很容易地(至少对于程序员)在c#中转换为string。不幸的是,char本身并不是char *,因此无法做到这一点。