Я подозреваю, что это может быть связано с тем, что управляемые строки являются неизменяемыми, поэтому всякий раз, когда вы думаете, что изменяете ее, вы фактически создаете новую строку и изменяете ссылку, чтобы вместо этого посмотреть на новую строку.
Я не уверен, как это работает, когда вы используете функции Windows API, но возможно, что во время вызова lstrcpy
будет создана новая строка, содержащая текст, на который указывает указатель, а потому что lstrcpy
может не помните о System.String
, он не обрабатывает его должным образом и поэтому не меняет s
на ссылку на новую строку.
Я думаю, что вы хотите использовать Text.StringBuilder
, поскольку это не является неизменным.