ការ cast មួយអាចប្រែជំនួយការកំណត់ proxy ដែលមើលទៅធម្មតាទៅជាការបរាជ័យដែលពឹងលើស្ថាបត្យកម្ម៖

current = (IntPtr)((int)current + optionSize);

កូដនោះបង្រួមអាសយដ្ឋានដើមទៅជាចំនួនគត់ 32-bit មុនពេលបន្ថែមទំហំរចនាសម្ព័ន្ធបន្ទាប់។ ដំណើរការ 64-bit អាចផ្ទុកអាសយដ្ឋានដែលមិនសម។ អាស្រ័យលើការបំប្លែង និងតម្លៃ លទ្ធផលអាចជាការលើសចំណុះ ឬអាសយដ្ឋានមិនត្រឹមត្រូវ។ ការត្រឡប់ build ទៅ x86 អាចបិទបាំងកំហុស ប៉ុន្តែទុកការអនុវត្ត interop ឱ្យពឹងលើដំណោះស្រាយបណ្តោះអាសន្ននោះ។

រក្សាអាសយដ្ឋានជាទម្រង់ទំហំចំណុចបញ្ជូន។ ឧទាហរណ៍ ដើម្បីដើរឆ្លងកាត់អារេដែលបានបែងចែករួច អាចប្រើ៖

IntPtr item = IntPtr.Add(buffer, checked(index * optionSize));

អុហ្វសិតនៅជាចំនួនគត់។ អាសយដ្ឋានខ្លួនវាមិនត្រូវបានច្របាច់តាមរយៈវាទេ។ ទំហំបែងចែក និងសន្ទស្សន៍នៅតែត្រូវតែមានសុពលភាព។

បន្ទាប់មកពិនិត្យការប្រកាសនៅជុំវិញ

ជម្រើស WinINet ក្នុងមួយការតភ្ជាប់មាន union ដែលសមាជិករួមមាន DWORD ចំណុចបញ្ជូនខ្សែអក្សរ និង FILETIME។ វាលចំណុចបញ្ជូនត្រូវការ IntPtr; វាល DWORD នៅ 32-bit។ ការតម្រឹមដើមមានសារៈសំខាន់ ដូច្នេះការជំនួសចំនួនគត់នីមួយៗដោយចំនួនគត់ 64-bit ឬការបង្ខំប្លង់ខ្ចប់មិនមែនជាការជួសជុលត្រឹមត្រូវទេ។

ប្រើទំហំរចនាសម្ព័ន្ធបន្ទាប់ពី marshaling ពេលដើរឆ្លងកាត់អារេ ផ្គូផ្គងការប្រកាស ANSI ឬ Unicode ឱ្យស្របគ្នា ហើយតាមដានការបែងចែកនីមួយៗដោយឡែក។ ការដោះលែងប្លុករចនាសម្ព័ន្ធជម្រើសមិនដោះលែងខ្សែអក្សរដែលបានបែងចែកនៅកន្លែងផ្សេង ហើយរចនាសម្ព័ន្ធទាំងនោះយោងទៅលើដោយស្វ័យប្រវត្តិទេ។

ចុងក្រោយ បែងចែកសំណួរអំពីវិសាលភាពនៃការកំណត់ចេញពីភាពត្រឹមត្រូវនៃអង្គចងចាំ។ ការជួសជុល cast មិនបញ្ជាក់ថាជម្រើស WinINet ដែលជំនួយការជ្រើសរើសប៉ះពាល់តែវិនិយោគមួយ ដំណើរការមួយ ឬការកំណត់របស់អ្នកប្រើបច្ចុប្បន្នទេ។ ពិនិត្យឥរិយាបថ API នោះ មុនពេលយកឧទាហរណ៍ចាស់ដែលនៅសល់។ ប្រសិនបើវាក៏ផ្ញើការជូនដំណឹងធ្វើឱ្យស្រស់ផងដែរ ជ្រើសពួកវាសម្រាប់វិសាលភាពដែលបានបម្រុង។

អត្ថបទពាក់ព័ន្ធ