В чем разница между new String(char*)
и Marshal.PtrToStringUni(IntPtr)
, кроме очевидного факта, что каждый берет char*
, а другой - IntPtr
?Когда я должен использовать какой?
Я помню, что получил действительно нарушение произвольного доступа, которое занимало огромное количество времени, чтобы отследить пару лет назад при использовании конструктора, и оно пошлопрочь, когда я использовал PtrToStringUni
.Может быть, это не было настоящей причиной, я не знаю, но, похоже, это так.
Я так и не понял, в чем разница.Есть идеи?
Редактировать:
На этот вопрос есть ответ на большинство моих вопросов;однако: есть ли какое-либо объяснение моего нарушения доступа, или это было из-за чего-то еще?