2010-03-06 37 views
4

〜做什麼?這是我剛剛繼承的Asp.Net v2類。類作品OK 這是一個默認的構造函數 是〜VNC是什麼〜用於?奇數構造函數

using System; 
using System.Web; 
using System.Data; 
using System.Web.Services; 
using System.Web.Services.Protocols; 
using System.Data.SqlClient; 
using System.Configuration; 

namespace UtopianClasses 
{ 
    public class VNC 
    { 
     public VNC(){ } 

     ~VNC() { 
      GC.Collect(); 
     } 

     public String VNCViewFilesLocationMCR 
     { 
      get { 
       return ConfigurationManager.AppSettings["VNCViewFilesLocation"].ToString();  
      } 

...

回答

3

如前所述的休息,這是一個析構函數。但是,不僅應該明確地實現析構函數,而且真的不應該從析構函數中強制GC集合,因爲析構函數是由垃圾收集器本身調用的。就我所知,這是任何GCed語言的代碼味道。

1

這是一個destructor,而不是一個構造函數。它們通常用於釋放原生資源或處理包裝本機API的類。

這就是說,添加一個構造函數調用GC.Collect()是一個壞主意。析構函數只在finalization過程中被調用,所以垃圾回收器已經清理了這個對象,以及這個對象引用的任何對象。沒有理由這樣做,因爲它只會增加開銷,並且實際上會降低系統速度。

這可能是由C++背景的人寫的,他不明白.NET中內存管理的複雜性。我會建議完全刪除它。

+0

這也是我的第一個想法,但後來我想象一個體面的C++程序員(我不是一個!)只會清理對象負責的東西。 – 2010-03-06 06:09:12