Согласно документации MSDN :
Любой из следующих типов может быть
тип указателя:
- sbyte, byte, short, ushort, int, uint, long, ulong, char, float,
double, decimal или bool.
- Любой тип перечисления.
- Любой тип указателя.
- Любой определяемый пользователем тип структуры, содержащий поля неуправляемых типов.
только.
Нет способа получить указатель на экземпляр класса (например, указатель на экземпляр System.Text.StringBuilder
), хотя вы можете иметь указатель на член класса в контексте fixed
, как в следующем коде :
class Test
{
static int x;
int y;
unsafe static void F(int* p) {
*p = 1;
}
static void Main() {
Test t = new Test();
int[] a = new int[10];
unsafe {
fixed (int* p = &x) F(p);
fixed (int* p = &t.y) F(p); // pointer to a member of a class
fixed (int* p = &a[0]) F(p);
fixed (int* p = a) F(p);
}
}
}