正常的String類型值,在脫離開作用域之后,其值在內存中並不會被立即銷毀,這時如果有人惡意掃描你的內存,程序中所保存的機密信息就會暴露;於是就有了System.Security.SecureString,SecureString表示一個應保密的文本,它在初始化時就已被加密,並且脫離作用域后會被立即銷毀;
附一個小Demo:

class Program{ static void Main(){ System.Security.SecureString secureStr = new System.Security.SecureString(); secureStr.AppendChar('A'); string re = secureStr.ToString();//SecureString 中的值會被加密保存,不能直接獲取,此時re=System.Security.SecureString IntPtr inP = Marshal.SecureStringToBSTR(secureStr);//inP為secureStr的句柄 string ss = Marshal.PtrToStringBSTR(inP);//ss="A" Marshal.ZeroFreeBSTR(inP);//釋放BSTR指針 string ss2 = Marshal.PtrToStringBSTR(inP);//ss2="" } }