Я отвечу на этот вопрос с точки зрения безопасности.
Если вы хотите уничтожить строку по соображениям безопасности, то это, вероятно, потому, что вы не хотите, чтобы кто-то отслеживал вашу секретную информацию, и вы ожидаете, что они могут сканировать память или найти ее в файле подкачки или что-то в компьютер украден или иным образом взломан.
Проблема в том, что как только в управляемом приложении создается System.String, с этим ничего не поделаешь. Может быть какой-то хитрый способ сделать небезопасное отражение и перезаписать байты, но я не могу себе представить, что такие вещи будут надежными.
Хитрость в том, чтобы вообще никогда не помещать информацию в строку.
Однажды у меня возникла эта проблема с системой, которую я разработал для некоторых ноутбуков компании. Жесткие диски не были зашифрованы, и я знал, что если кто-то заберет ноутбук, он сможет легко отсканировать его на предмет конфиденциальной информации. Я хотел защитить пароль от таких атак.
Способ, которым я разбираюсь с этим, заключается в следующем: я помещаю пароль в байтовый массив, записывая события нажатия клавиш в элементе управления textbox. Текстовое поле никогда не содержало ничего, кроме звездочек и отдельных символов. Пароль никогда не существовал как строка в любое время. Затем я хэшировал массив байтов и обнулял оригинал. Затем хэш был XOR-код со случайным жестко закодированным ключом, который использовался для шифрования всех конфиденциальных данных.
После того, как все было зашифровано, ключ был обнулен.
Естественно, некоторые данные могут существовать в файле страницы в виде открытого текста, и также возможно, что окончательный ключ также может быть проверен. Но никто не собирался воровать пароль, черт возьми!