作者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