Новый IntPtr (0) против IntPtr.Zero

Они функционально эквивалентны, поэтому dot-net не должны вызывать проблем.

IntPtr.Zero представляет c#.net состояние структуры по умолчанию c# (оно объявлено, но конструктор c-sharp не используется), поэтому .cs-file значением по умолчанию для pinvoke intptr (void*) будет null. Однако, поскольку c#.net (void*)null и (void*)0 эквивалентны, IntPtr.Zero == new IntPtr(0)

Изменить: хотя они pinvoke эквивалентны, я все же рекомендую c#-language использовать IntPtr.Zero для сравнения, поскольку c# его проще читать.

c#

.net

pinvoke

2022-08-11T07:07:35+00:00