Учитывая public String(char*) почему мы не можем использовать следующий оператор?
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
Просто используйте:
string str = "aaa";
Вам не нужно new строку.
new
"ааа" - это строка. Это не char *. char * используется с unsafe кодом.
char *
unsafe
Поскольку это не предназначено для использования в безопасном коде ...
В C # этот конструктор определяется только в контексте небезопасного кода.
from: http://msdn.microsoft.com/en-us/library/6y4za026.aspx
Если вам нужно создать строку, вы можете просто использовать буквальное замедление ..
Тип char* предназначен для небезопасного указателя - для объекта, не являющегося частью управляемой платформы .Net.Когда вы помещаете литеральную строку "aaa" в ваш код, это управляемый объект.string не является char* в C #.
char*
"aaa"
string
Вы пытаетесь вызвать конструктор со строкой в качестве параметра.
Компилятор сообщает, что нет строкового конструктора с одной строкой в качестве параметра.
взгляните на это, это может разрешить ваши сомнения