Да, указатели существуют.
Ссылки на самом деле являются указателями, но они отличаются тем, что сборщик мусора знает о них и изменяет их, когда перемещает объекты.
Указатели могутиспользоваться в небезопасном коде, но затем вы должны убедиться, что сборщик мусора не перемещает объекты, на которые вы указываете.
Пример:
string x = "asdf";
unsafe {
fixed (char* s = x) {
char* p = s;
for (int i = 0; i < 4; i++) {
Console.WriteLine(*p);
p++;
}
}
}
Обратите внимание, что управляемыйобъект, к которому вы хотите получить доступ через указатель, должен быть защищен от перемещения с помощью команды fixed
, и компилятор не позволит вам изменить указатель, который вы получаете, поэтому, если вы хотите изменить указатель, вы должныскопируйте его.
Вам необходимо включить небезопасный код в настройках проекта, чтобы использовать ключевое слово unsafe
.