如题。

解决方案 »

  1.   

    值类型的变量。由于值变量创建在栈中,当栈回位时,变量就被马上抛弃了。
    而引用类型的变量,创建在托管堆中,只有到垃圾回收时,才有可能被抛弃。但是否删除(比如覆盖为零),则取决于CLR。如果你要删除敏感信息,可以考虑参考System.Security中的SecureString。
    void MyMethod()
    {
       int i = 123;         // 123   - 栈
       string s = "who";    // "who" - 托管堆}                       // 123 is gone but "who" could survive till garbage collection
      

  2.   

    一般來說如果是托管代碼的話,那么這些變量都不會馬上清除的,由.net自己管理,等到需要的時候才會進行回收內存空間(一般是Generation 0).但如果是非托管對象,你同時又調用了內存釋放的方法,就可以立即釋放的