看板 C_Sharp 關於我們 聯絡資訊
class TotalArea { private static double total ; public TotalArea(Area c) { total += c.area(); Console.WriteLine("本卡片面積為{0},目前累計面積為{1}", c.area(), total); } } 上面是我練習時所作的類別 我從我的Main去呼叫這類別取算出我的面積 這面積是累加的 所以我定義一個Total 但我想詢問關於定義的這一行 private static double total ; 當我把Static 移除時改為 private double total ; 為什麼我的面積就沒累加了? 我從書上自學的觀念是 Static 是屬於類別的 可以直接使用類別.名稱不用在建立新物件 在類別內使用Static就如同宣告全域變數 故當我把Static移除時 他就變成區域便數 使得每跑一次類別就重新宣告一次 想問我這方面的觀念是否正確 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.181.44.182
andymai:把static移除後~要用時不是就會變成 new TotalArea 這樣嗎 01/18 22:31
andymai:?既然都是新的物件了~又怎會有之前的資料~"重新宣告"這個 01/18 22:31
andymai:說法~應該不太對... 01/18 22:32
KanoLoa:本來公共使用的黑板,變成每人一塊的小黑板 01/19 00:02
redonizuka:抱歉 能再稍微說細一點嗎? 自我看書學 有些想更了解 01/19 00:33
GoalBased:http://ppt.cc/WvhI 01/19 07:50
GoalBased:觀念上是沒有錯 01/19 07:54
steve1012:static 就是靜態的 只初始化一次 所以你每跑一次類別他 01/19 11:34
steve1012:就不會重新宣告一次 01/19 11:34
steve1012:就像r大講的static 就是一個大黑板 每個成員都可以用她 01/19 11:35
FNRLV:以C的角度的話 static 是靜態 意思是這個"名字"的變數 01/19 12:34
FNRLV:宣告完之後就被固定在RAM中 只能被宣告一次 01/19 12:34
FNRLV:外部要使用就必須使用extern讓compliar知道要去哪個位址存取 01/19 12:35
FNRLV:至於改成double之後 就是跟著你的class走 屬於你的class成員 01/19 12:36
FNRLV:就好像...水母很多人都有 但是姓馬的台灣水母只有一隻(大誤 01/19 12:38
andymai:之所以說"重新宣告"不太對~是因為TotalArea t;這樣是宣告 01/19 14:48
andymai:t是TotalArea類別~而new TotalArea是在配置TotalArea物件 01/19 14:49
andymai:記憶體了~與其說是"重新宣告"~倒不如說是"重新配置物件" 01/19 14:50
GoalBased:重新宣告這個詞有點怪 因為每次你進入那個fun都是一個新 01/19 14:50
GoalBased:的東西 01/19 14:50
GoalBased:所以也就沒有"重新"的感覺 01/19 14:51