作者redonizuka (R大)
看板C_Sharp
標題[問題] Static 使用觀念詢問
時間Sat Jan 18 21:41:25 2014
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
1F:→ andymai:把static移除後~要用時不是就會變成 new TotalArea 這樣嗎 01/18 22:31
2F:→ andymai:?既然都是新的物件了~又怎會有之前的資料~"重新宣告"這個 01/18 22:31
3F:→ andymai:說法~應該不太對... 01/18 22:32
4F:推 KanoLoa:本來公共使用的黑板,變成每人一塊的小黑板 01/19 00:02
5F:→ redonizuka:抱歉 能再稍微說細一點嗎? 自我看書學 有些想更了解 01/19 00:33
7F:推 GoalBased:觀念上是沒有錯 01/19 07:54
8F:推 steve1012:static 就是靜態的 只初始化一次 所以你每跑一次類別他 01/19 11:34
9F:→ steve1012:就不會重新宣告一次 01/19 11:34
10F:→ steve1012:就像r大講的static 就是一個大黑板 每個成員都可以用她 01/19 11:35
11F:推 FNRLV:以C的角度的話 static 是靜態 意思是這個"名字"的變數 01/19 12:34
12F:→ FNRLV:宣告完之後就被固定在RAM中 只能被宣告一次 01/19 12:34
13F:→ FNRLV:外部要使用就必須使用extern讓compliar知道要去哪個位址存取 01/19 12:35
14F:→ FNRLV:至於改成double之後 就是跟著你的class走 屬於你的class成員 01/19 12:36
15F:→ FNRLV:就好像...水母很多人都有 但是姓馬的台灣水母只有一隻(大誤 01/19 12:38
16F:→ andymai:之所以說"重新宣告"不太對~是因為TotalArea t;這樣是宣告 01/19 14:48
17F:→ andymai:t是TotalArea類別~而new TotalArea是在配置TotalArea物件 01/19 14:49
18F:→ andymai:記憶體了~與其說是"重新宣告"~倒不如說是"重新配置物件" 01/19 14:50
19F:推 GoalBased:重新宣告這個詞有點怪 因為每次你進入那個fun都是一個新 01/19 14:50
20F:→ GoalBased:的東西 01/19 14:50
21F:→ GoalBased:所以也就沒有"重新"的感覺 01/19 14:51