Рассмотрим следующий DllImport:
[DllImport("lulz.so")]
public static extern int DoSomething(IntPtr SomeParam);
На самом деле это ссылка на функцию стиля C, например:
int DoSomething(void* SomeParam);
Учтите, что SomeParam является параметром "out", но также может иметь значение NULL. Функция C ведет себя по-разному, если параметр равен NULL. Поэтому я, вероятно, хотел бы:
[DllImport("lulz.so")]
public static extern int DoSomething(out IntPtr SomeParam);
Но, если я сделаю это out-параметром в своем импорте, я не смогу передать его NULL, т.е.
int retVal = DoSomething(IntPtr.Zero)
Какие у меня есть варианты?