鉴于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
答案 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);