2017-02-17 64 views

回答

0

根据文档,它似乎是可变的。

字符串与SecureString的

System.String类的实例是不可变的,当不再需要时,不能以编程方式安排垃圾回收;也就是说,实例在创建后是只读的,并且无法预测实例何时从计算机内存中删除。因为System.String实例是不可变的,所以似乎修改现有实例的操作实际上会创建它的副本来进行操作。因此,如果字符串对象包含密码,信用卡号码或个人数据等敏感信息,则信息在使用后可能会被泄露,因为您的应用程序无法从计算机内存中删除数据。

SecureString对象与String对象类似,它具有文本值。但是,SecureString对象的值固定在内存中,可能使用底层操作系统提供的保护机制(如加密),可以进行修改,直到您的应用程序将其标记为只读,并且可以从计算机内存中删除无论是由您的应用程序调用Dispose方法还是由.NET Framework垃圾收集器。

https://msdn.microsoft.com/en-us/library/system.security.securestring(v=vs.110).aspx

相关问题