Почему строка str = новая строка ("abc") не проходит компилятор? - PullRequest
2 голосов
/ 02 июня 2011

Учитывая 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 ]

10 голосов
/ 02 июня 2011

Просто используйте:

 string str = "aaa";

Вам не нужно new строку.

"ааа" - это строка. Это не char *.
char * используется с unsafe кодом.

6 голосов
/ 02 июня 2011

Поскольку это не предназначено для использования в безопасном коде ...

В C # этот конструктор определяется только в контексте небезопасного кода.

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

Если вам нужно создать строку, вы можете просто использовать буквальное замедление ..

string str = "aaa";
4 голосов
/ 02 июня 2011

Тип char* предназначен для небезопасного указателя - для объекта, не являющегося частью управляемой платформы .Net.Когда вы помещаете литеральную строку "aaa" в ваш код, это управляемый объект.string не является char* в C #.

4 голосов
/ 02 июня 2011

Вы пытаетесь вызвать конструктор со строкой в ​​качестве параметра.

Компилятор сообщает, что нет строкового конструктора с одной строкой в ​​качестве параметра.

1 голос
/ 02 июня 2011

взгляните на это, это может разрешить ваши сомнения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...