本課簡介
如果不想要建立物件,卻又想使用 class 的功能該怎麼辦呢?
那你就會需要 static 的幫忙
教學影片
注意:影片有高畫質 720P 的選項,可以看得更清楚喔!
重點提示
1. 使用了 static 修飾過的變數、method,不需要建立物件就可以直接透過 class 名稱使用
2. static 修飾過的變數是所有同 class 的物件共用的
3. static class 不可以用來建立物件
補充
static 變數在記憶體內的狀態
每一個物件的變數與其相關的資料都會存在物件被分配的記憶體內。那本課提到了 static 變數是所有物件共用的,這個時候可能就會不禁問說:那 static 變數放哪裡?答案是,放在 class 本身所屬的記憶體區塊裡。每個程式啟動的時候,都會分配給每個 class 一塊記憶體使用,裡面放的內容包含 class 的 static 變數以及 class 的程式碼。當然這個部分的實作細節,會隨著不同版本的 .NET Framework 而有差異。
相關資訊連結
微軟官方對於 static 的介紹
http://msdn.microsoft.com/zh-tw/library/98f28cdx%28v=vs.80%29.aspx
請問什麼情況下我會考慮使用static,什麼情況下我會透過new
回覆刪除可以給我e-mail嗎?
可以透過mail跟你請教問題嗎?
謝謝!
pos1623@gmail.com
請問一下,我想用Math.log 為什麼,我Math.後面出來的都是呼叫到class ,怎都沒有你那一大串的數學函式?
回覆刪除恩... 我可能需要多一點資訊才有辦法判斷哦~
刪除可以貼上整頁的程式碼嗎?
小山老師,你好
回覆刪除請教一個問題
影片中,為什麼要在class Studdent裡面輸入
public int Score
public int PassScope
public bool isPass()
{
一組的if else
}
怎麼沒有把這些放在class Math裡面
作者已經移除這則留言。
刪除這樣也可以----
刪除在Student.cs中
public bool isPass(int score)
{
Score = score;
if (Score >= passScore)
{
return true; // 及格
}
else
{
return false; // 不及格
}
}
在Form1.cs中
if (s2.isPass(10) == true)
{
MessageBox.Show("過關");
}
else
{
MessageBox.Show("掰掰");
}
這樣可以達成~~
小山老師
回覆刪除以上的教學我都OK
但想試作顯示2個以上的成績結果
請問該怎麼作呢??
是假設若有20個student
那判斷式不就寫到暈倒了
關於你的情況,若想要處理大量同樣類型的資料
刪除可以使用第22課所教的「陣列」,再配合之前講過的 for 迴圈
你可以參考看看
小山老師,可以講解一下 class 和 struct 的區別和用法嗎?
回覆刪除作者已經移除這則留言。
回覆刪除