閱讀Stephens' C#教材第十三章筆記
Chapter 13 Understanding Scope.
Scope在程式設計世界代表的是一個變數可以被看見並使用的作用範圍,這決定了變數是否能夠被讀取或是設定新值。
C#類別(Class)中包含三種scope:
class scope
method scope
block scope
namespace VariableScope
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// A field.
int a = 1;
private void clickMeTooButton_Click(object sender, EventArgs e)
{
//A method variable.
int c = 2;
MessageBox.Show("a = " + a.ToString() +
"\nb = " + c.ToString());
}
private void clickMeButton_Click(object sender, EventArgs e)
{
//A method variable.
int b = 3;
if (a==1)
{
int d;
d=a+b;
MessageBox.Show("d = " + d.ToString() +
"\nb = " + b.ToString());
}
}
}
}
以上面VariableScope程式為例
變數a宣告在三個方法外面(Form1, clickMeButton_Click及clickMeTooButton_Click),a具有class的scope。
變數b宣告在clickMeButton_Click方法內,所以b具有method的scope。
變數c宣告在clickMeTooButton_Click方法內,所以跟b一樣具有method的scope。
變數d宣告在if判斷的程式block內,所以d具有blockd的scope。
C#允許名稱相同,但是Scope不衝突的變數宣告。例如上面clickMeTooButton_Click程式,可以將變數c宣告成變數b,因為兩個變數Scope不會重複。
介紹變數的生命期(Lifetime),通常變數若在method或block宣告,當method或block執行完畢,變數的生命期也結束(記憶體空間釋放回收)。
介紹存取範圍層級(Accessibility),可參考 http://msdn.microsoft.com/zh-tw/library/ba0a1yw2.aspx
TRY IT中示範可以加入物品,計算單項物品數量的小計,以及計算總金額的程式