IntPtr
является типом значения, поэтому, в отличие от String.Empty
, наличие статического свойства IntPtr.Zero
сравнительно мало.
Как только вы передадите IntPtr.Zero
в любом месте, вы получите копию, поэтому для инициализации переменной это не имеет значения:
IntPtr myPtr = new IntPtr(0);
IntPtr myPtr2 = IntPtr.Zero;
//using myPtr or myPtr2 makes no difference
//you can pass myPtr2 by ref, it's now a copy
Есть одно исключение, и это сравнение:
if( myPtr != new IntPtr(0) ) {
//new pointer initialised to check
}
if( myPtr != IntPtr.Zero ) {
//no new pointer needed
}
Как уже сказано в нескольких постерах.