Я хотел бы иметь возможность объявить функцию как
void foo(<any value type>[] data){}
в C # 2.0. Если я объявлю это как
void foo(ValueType[] data){}
он компилируется, но тогда элементы в data [] обрабатываются так, как будто они получены из object
, например Я не могу сказать что-то вроде
fixed (void* pData = data){}
Я бы хотел не принимать void * в качестве параметра - я просто хочу иметь возможность принимать любой массив значений и затем выполнять с ним неуправляемые действия.
ETA: с этой же проблемой связано:
public static unsafe void foo<T>(T[] data) where T:struct{
fixed(void *p = data){}
}
на случай, если вам интересно. Исправлены ошибки, потому что он рассматривается как управляемый тип - CS0208, не может объявить указатель на управляемый тип. Смотрите «мм» ниже. Я думаю, что он прав ... это, вероятно, просто невозможно сделать.