當我們程式有類似「資料結構」的內容時,可以使用
Structure這個關鍵字來幫我們建立一個資料結構。Structure與Class很類似,我們先來看MSDN解譯:
Structure 陳述式定義可自訂的複合 (Compositing) 實值型別。
...
結構支援許多和類別相同的功能。例如,結構可以具有屬性和程序、可以實作介面,也可以具有參數型建構函式。但是,結構與繼承 (Inheritance)、宣告和使用方式等區域中的類別之間有明顯的差異。而且,類別是參考型別 (Reference Type),而結構是實值型別 (Value Type)。
...
結構支援許多和類別相同的功能。例如,結構可以具有屬性和程序、可以實作介面,也可以具有參數型建構函式。但是,結構與繼承 (Inheritance)、宣告和使用方式等區域中的類別之間有明顯的差異。而且,類別是參考型別 (Reference Type),而結構是實值型別 (Value Type)。
...
結構預設值為 Friend (Visual Basic) 存取。
如果你對Friend不是很了解,可以參考這篇討論「
Public與Friend的差異」。我們使用MSDN上的範例來改寫:
先在畫面上放兩個Textbox,一個輸入薪資,一個輸入獎金比例,在放一個按鈕來計算獎金:
02 | 新資:<asp:TextBox ID= "TextBox1" runat= "server" ></asp:TextBox> |
05 | 倍數:<asp:TextBox ID= "TextBox2" runat= "server" ></asp:TextBox> |
08 | <asp:Button ID= "Button1" runat= "server" Text= "計算獎金" /> |
11 | <asp:Label ID= "Label1" runat= "server" Text= "Label" > |
在後置程式碼中,我們先定義Structure,然後在click事件中撰寫處理程式:
02 | Inherits System.Web.UI.Page |
04 | Public Structure Employee |
06 | Dim EmpNumber As String |
10 | Friend Sub CalcBonus( ByVal Rate As Single ) |
16 | Protected Sub Button1_Click( ByVal sender As Object , ByVal e As System.EventArgs) Handles Button1.Click |
20 | Bruce.EmpNumber = "s2877001" |
21 | Bruce.Salary = Me .TextBox1.Text |
22 | Bruce.CalcBonus( Me .TextBox2.Text) |
24 | Me .Label1.Text = String .Format("您好{0} |
28 | 共領:{4}元", Bruce.Name, Bruce.EmpNumber, Bruce.Salary, Bruce.Bonus, Bruce.Salary + Bruce.Bonus) |
你查看一下Dim Bruce As Employee,
Employee是Structure而不是Class,
Bruce是_Default.Employee型別,想成Structure的型別。
當我們不需要使用到Class那怎那強大又複雜的功能時,就可以考慮使用Structure,另一個好處是使用Structure的幫我們整理相關的資料細節,讓我們的程式看起來更有結構性。如果以上程式不使用Structure的話寫法如下:
01 | Protected Sub Button1_Click( ByVal sender As Object , ByVal e As System.EventArgs) Handles Button1.Click |
04 | Dim EmpNumber As String |
05 | EmpNumber = "s2877001" |
07 | Salary = Me .TextBox1.Text |
09 | Bonus = Salary * Me .TextBox2.Text |
11 | Me .Label1.Text = String .Format("您好{0} |
15 | 共領:{4}元", Name, EmpNumber, Salary, Bonus, Salary + Bonus) |
如這時需要在計算一個女金剛的資料,
那你就必須再重覆的Dim ...,而且第二次還不能使用相同名稱,但如果使用Structure我只需要「Dim Sherry As Employee」完成了整個資料結構,所有的屬性、函數…都一樣,使用起來輕鬆又方便。一個好用的技巧,介紹給大家。
看到Structures又稱「使用者定義型別」。
回覆刪除