[問題] return的區域變數scope?

看板C_Sharp (C#)作者 (tomex_ou)時間20年前 (2005/09/13 10:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
假如有個一函數傳回DataTable物件: DataTable GetDataTable() { DataTable dt = new DataTable(); ... return dt; } DataTable dt1 = GetDataTable(); //這行是正常的, dt1指向dt記憶體位置 dt1.Rows(); // dt是區域變數物件,scope已消失,隨時被回收, dt1危險! 最近學c++,特別重視記憶體管理, 以前用c#都沒在乎dt是有scope範圍的local變數, 現在好像覺得蠻危險的。 return string比較沒問題,因為string接收時都採複制1份新的記憶體空間 但物件似乎不是如此 雖然gc沒那麼快回收,但終究是超出scope範圍的變數, 大家怎麼看這問題呢? -- 貫徹分享精神 我為人人,人人為我 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.78.132.15
文章代碼(AID): #139ZAtU2 (C_Sharp)
文章代碼(AID): #139ZAtU2 (C_Sharp)