Как объявить IntPtr?

У меня есть средство выбора ручки окна, и оно говорит, что моя ручка 0094167C. Когда я объявляю переменную в C#, буква в этом коде выдает ошибку. Как объявить?

public const IntPtr WinHandle = 0094167C;

3 ответа

Решение

Вы знаете, что дескриптор, как правило, будет меняться при каждом запуске приложения и / или системы? Это означает, что ваша константа в любом случае подвержена сбоям.

Однако если вы действительно хотите присвоить константу, отличную от нуля, IntPtr (что будет IntPtr.Zero), в документации говорится, что есть конструкторы, которые принимают Int32, Int64 или же Void* в качестве параметра.

Как указывает OregonGhost, вы, вероятно, не хотите делать это для дескриптора окна. Тем не менее, для IntPtr в целом, то, что вы можете сделать, это статические поля только для чтения:

static readonly IntPtr TenK = new IntPtr(1024 * 10000);

Я хотел бы добавить к ответу AgnosticOracle.

В дополнение к постоянным переменным IntPtr/UIntPtr, доступным только для чтения, вы можете использоватьnintиnuintкоторые поддерживаются IntPtr и UIntPtr соответственно.

Этим типам могут быть назначены целые и беззнаковые целые значения, а также они могут быть определены как константы.

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types#native-sized-integers

Другие вопросы по тегам