Pull to refresh

Comments 7

Странный у вас способ себе в ногу стрелять. Вполне очевидно, что можно «испортить» внутреннее представление многих .NET-типов, после чего программа будет вести себя плохо. Что касается P/Invoke, то тут нужно разговаривать именно о неуправляемом коде и ошибках в нём, а не о сайд-эффектах после возвращения в управляемое окружение. Я считаю, что вы не с того конца обсуждение начали, морали нет. Если бы было что-нибудь в духе «В коде на С++ легко сделать вот такую ошибку, после чего при использовании P/Invoke из .NET могут быть такие-то проблемы; поступайте так-то, проверяйте то-то, не забывайте писать вот такие-то тесты», то пользы от статьи было бы намного больше.
Спасибо за полезные замечания, да, начал в другого конца, про внутренности типов, а не про случаи использования. Про конкретные кейсы на C++ будет позже продолжение.
Однако, полагаю, что и при программировании на чистом C# будет полезным помнить об устройстве типов.
И, да в коде на C++ ошибки может и не быть, но в C# через P/Invoke случай нужно будет корректно обработать.
Неплохо было бы таки написать, что выведет приведенный код, и как добиться разных output'ов.
Sign up to leave a comment.

Articles