为什么string str = new string(“abc”)不通过编译器?

时间:2011-06-01 20:38:45

标签: c# string

鉴于public String(char*)为什么我们不能使用以下声明?

string str = new string("aaa");

错误1

  

最佳重载方法匹配   'string.String(char *)'有一些   无效   参数C:\ temp \ ConsoleApplication2 \ ConsoleApplication2 \ Program.cs 19 26 ConsoleApplication2

错误2

  

参数1:无法转换   '字符串'到   'char *'C:\ temp \ ConsoleApplication2 \ ConsoleApplication2 \ Program.cs 19 37 ConsoleApplication2

5 个答案:

答案 0 :(得分:10)

只需使用:

 string str = "aaa";

您不需要new字符串。

“aaa”是一个字符串。它不是char * char *unsafe代码一起使用。

答案 1 :(得分:6)

因为这不是用于安全代码......

  

在C#中,此构造函数仅在不安全代码的上下文中定义。

来自:http://msdn.microsoft.com/en-us/library/6y4za026.aspx

如果你需要构造一个字符串,你可以使用文字解除..

string str = "aaa";

答案 2 :(得分:4)

您正在尝试使用字符串作为参数调用构造函数。

编译器告诉你没有字符串构造函数,只有一个字符串作为参数。

答案 3 :(得分:4)

类型char*用于指向不属于.Net托管框架的对象的不安全指针。将文字字符串"aaa"放在代码中时,这是一个托管对象。 C#中string不是char*

答案 4 :(得分:1)

希望这可以解决您的疑问C# New String Constructor

unsafe public String(char*);
       public String(char[]);
unsafe public String(sbyte*);
       public String(char, int);
unsafe public String(char*, int, int);
       public String(char[], int, int);
unsafe public String(sbyte*, int, int);
unsafe public String(sbyte*, int, int, Encoding);