[問題] Static 使用觀念詢問

看板C_Sharp (C#)作者 (R大)時間11年前 (2014/01/18 21:41), 編輯推噓6(6015)
留言21則, 6人參與, 最新討論串1/1
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

01/18 22:31, , 1F
把static移除後~要用時不是就會變成 new TotalArea 這樣嗎
01/18 22:31, 1F

01/18 22:31, , 2F
?既然都是新的物件了~又怎會有之前的資料~"重新宣告"這個
01/18 22:31, 2F

01/18 22:32, , 3F
說法~應該不太對...
01/18 22:32, 3F

01/19 00:02, , 4F
本來公共使用的黑板,變成每人一塊的小黑板
01/19 00:02, 4F

01/19 00:33, , 5F
抱歉 能再稍微說細一點嗎? 自我看書學 有些想更了解
01/19 00:33, 5F

01/19 07:50, , 6F
01/19 07:50, 6F

01/19 07:54, , 7F
觀念上是沒有錯
01/19 07:54, 7F

01/19 11:34, , 8F
static 就是靜態的 只初始化一次 所以你每跑一次類別他
01/19 11:34, 8F

01/19 11:34, , 9F
就不會重新宣告一次
01/19 11:34, 9F

01/19 11:35, , 10F
就像r大講的static 就是一個大黑板 每個成員都可以用她
01/19 11:35, 10F

01/19 12:34, , 11F
以C的角度的話 static 是靜態 意思是這個"名字"的變數
01/19 12:34, 11F

01/19 12:34, , 12F
宣告完之後就被固定在RAM中 只能被宣告一次
01/19 12:34, 12F

01/19 12:35, , 13F
外部要使用就必須使用extern讓compliar知道要去哪個位址存取
01/19 12:35, 13F

01/19 12:36, , 14F
至於改成double之後 就是跟著你的class走 屬於你的class成員
01/19 12:36, 14F

01/19 12:38, , 15F
就好像...水母很多人都有 但是姓馬的台灣水母只有一隻(大誤
01/19 12:38, 15F

01/19 14:48, , 16F
之所以說"重新宣告"不太對~是因為TotalArea t;這樣是宣告
01/19 14:48, 16F

01/19 14:49, , 17F
t是TotalArea類別~而new TotalArea是在配置TotalArea物件
01/19 14:49, 17F

01/19 14:50, , 18F
記憶體了~與其說是"重新宣告"~倒不如說是"重新配置物件"
01/19 14:50, 18F

01/19 14:50, , 19F
重新宣告這個詞有點怪 因為每次你進入那個fun都是一個新
01/19 14:50, 19F

01/19 14:50, , 20F
的東西
01/19 14:50, 20F

01/19 14:51, , 21F
所以也就沒有"重新"的感覺
01/19 14:51, 21F
文章代碼(AID): #1IseI88L (C_Sharp)
文章代碼(AID): #1IseI88L (C_Sharp)