C#物件會員變數與method參數同名時

看板C_Sharp (C#)作者 (tomex_ou)時間20年前 (2005/05/12 16:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
不要以為compiler會提醒你錯誤 因為它是合法的, compiler會認為它是參數,除非是加入this.var來判別。 class c1 { public static int x = 10; void Add(int x) // Add(1), c1.x依然是10. { x = x; } } 在.Net 1.0它是不合法的,但.Net 1.1某時間後及.Net 2.0都是合法的 大家注意一下,以免像我一樣,debug到很慘的境界... 最近讀好多c#的基本物件繼承概念, 上述不同的scope能有同名的變數命名,稱為shadowing... 直覺上很奇怪,會懷疑為何c#要讓這樣的危險的關係存在?! 原來是因為在繼承時,我們常常不曉得parent有什麼會員變數, 儘管它們一般都是會private,但也有可能是被宣告為public 或static。 因此compiler允許這樣的方式存在同名。 至於method同名,也得用override來取代了!! -- 貫徹分享精神 我為人人,人人為我 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.89.46 ※ 編輯: tomex 來自: 60.248.89.46 (05/12 16:36)
文章代碼(AID): #12WnJRCR (C_Sharp)
文章代碼(AID): #12WnJRCR (C_Sharp)