Ошибки компиляции C # в небезопасном коде - PullRequest
0 голосов
/ 15 декабря 2010

При компиляции проекта VS 2010 c # (.NET 4.0, любой процессор, разрешить небезопасный код = проверено) мы получаем множество ошибок компиляции, как показано ниже:

  1. Оператор '*' нельзя применить к операндам типа 'System.IntPtr' и 'int'

  2. Константа '325486741' не может быть преобразована в 'int' (используйте синтаксис 'unchecked' для переопределения)

  3. Невозможно преобразовать тип 'string' в 'char *'

  4. Невозможно неявно преобразовать тип 'long' в 'byte *'. Существует явное преобразование (вам не хватает приведения?)

  5. Неправильный термин выражения 'ref'

Все это происходит в «небезопасных» методах.

Как их решить?

1 Ответ

2 голосов
/ 15 декабря 2010

Нам нужно было бы увидеть ваш код, но я бы сказал, что «небезопасная» часть не имеет отношения к ошибкам, поскольку, похоже, это проблемы с приведением типа и тому подобное.

Вот некоторая информация, котораяможет помочь:

  1. Оператор '*' нельзя применить к операндам типа 'System.IntPtr' и 'int'

Попробуйте сначала привести к int или long.

  1. Значение константы '325486741' не может быть преобразовано в 'int' (используйте синтаксис unchecked для переопределения)

Попробуйте использовать переменную unchecked ((int)).

  1. Невозможно преобразовать тип 'string' в 'char *'

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

 fixed (char* pChar = my_string) { ... }
  1. Невозможно неявно преобразовать тип 'long'в' байт * '.Существует явное преобразование (вам не хватает приведения?)

Попробуйте преобразовать: byte * pB = (byte *) значение;

  1. Недопустимый термин выражения 'ref'

Я не могу много сказать об этом без кода.

...