《C#面向?qū)ο缶幊?三)屬性和索引》由會員分享,可在線閱讀,更多相關(guān)《C#面向?qū)ο缶幊?三)屬性和索引(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,C#,面向?qū)ο缶幊?(,三,),屬性和索引,berry,博客:,5.2,屬性,5.3.1 get,訪問器,5.3.2 set,訪問器,屬性,在設(shè)計一個類時,總是要隱藏一些私有成員,將這些成員設(shè)置成,private,,禁止類外面的方法直接訪問這些成員,要訪問這些私有的成員可以通過一些公有的方法。,例:用公有方法訪問私有成員,using System;,class Empolyee,double salary=100.00
2、;,public double AccessSalary(),return salary;,class Mainclass,public static void Main(),Empolyee e=new Empolyee();,double s=e.AccessSalary();,Console.WriteLine(“s=0”,s);,C#,給我們提供了一種更理想的方法,就是屬性,通過屬性讓用戶像訪問公有成員字段一樣來訪問類的私有成員字段。屬性機(jī)制中有兩個屬性訪問函數(shù),get,和,set,,即屬性的讀寫是由,get,和,set,來實現(xiàn)的。如果沒有,set,方法則表示屬性是只讀(get)的,如
3、果沒有,get,方法則表示屬性是只寫(set)的。,在類中定義屬性的格式:,修飾符 類型名 屬性名,get ,set ,5.3.1 get,訪問器,private string id;/,定義了一個私有字段,id,public string Id /,定義了一個屬性,Id,,注意不能與私有字段同名,get /,屬性中的,get,訪問器,return id;,有了上述的屬性定義后,我們就可以通過直接訪問公有的,Id,屬性,來實現(xiàn)對私有字段,id,的訪問。,get,訪問器完整例子,using System;,public class Student,private string name;,pri
4、vate string number;,public Student(string na,string nu),name=na;number=nu;,public string Name,get return name;,public string Number,get return number;,public class AppMain,public static voic Main(),Student s1=new Student(“zhaojing”,”200435672);,Console.WriteLine(“0”,s1.Name,);,Console.WriteLine(“0”,
5、s1.Number,);,5.3.2 set,訪問器,private string id;/,定義了一個私有字段,id,public string Id /,定義了一個屬性,Id,,注意不能與私有字段同名,get /,屬性中的,get,訪問器,return id;,set /,增設(shè)的,set,訪問器,id=value;,set,訪問器意味著可以對成員的值進(jìn)行寫操作。如果我們對屬性,Id,賦值,就意味著調(diào)用了,set,訪問器,如,s.Id=“zhanghua”;(s,是類實例)。,屬性的訪問,屬性的訪問實際上就是調(diào)用相應(yīng)的,set,或,get,方法。,s.Id=“zhanghua”,表示對,s,
6、變量的屬性進(jìn)行設(shè)置,相當(dāng)與調(diào)用,set_Id,方法;而,Console.WriteLine(s.Id),表示對,s,變量的屬性進(jìn)行獲取,相當(dāng)于調(diào)用,get,方法。,編譯器將自動產(chǎn)生相應(yīng)的方法。,如對于上面的,Id,屬性,產(chǎn)生的方法為,void set_Id(string value);,string get_Id();,屬性和域的選擇,屬性可以實現(xiàn)只讀或只寫;屬性還可以返回一些經(jīng)過計算或處理過的數(shù)據(jù);屬性的實現(xiàn)實際上是方法的實現(xiàn),可以具有方法的一些特點。,在,C#,中,屬性和域的選擇一般采取以下原則:,1,、若在類的內(nèi)部記錄事物的狀態(tài)信息,用域變量;,2,、域變量一般用,private,修飾,
7、以防止對外使用;,3,、對外公布事物的狀態(tài)信息,則使用屬性;,4,、屬性一般與一個域變量或幾個域變量有關(guān)。,5.3,索引,在數(shù)組中我們可以通過下標(biāo)來方便地訪問數(shù)組中的元素,索引器可以讓我們把對象當(dāng)成數(shù)組一樣來方便地訪問,即可以是對象能用下標(biāo)來得到一個值。,class Myclass,public object this int index,get,.,set,.,定義以后的使用:,Myclass mc=new Myclass();,/,生成一個實例,mc,mc0=object1;,/,訪問類型為,object,的私有成員數(shù)組的第一個值,Console.WriteLine(“0”,mc0);,/
8、,讀出,mc,中私有數(shù)組的第一個值,索引的定義,索引的定義與屬性類似,也有,get,和,set,方法,但是沒有屬性名字,而是用,this,表示索引。,使用參數(shù)列表來表示使用索引的參數(shù),至少需要一個參數(shù)。,索引的使用是使用放括號,,如,mc0,即 對象名,參數(shù),class Myclass,public object this int index,get,.,set,.,索引使用舉例:,假設(shè)有一個數(shù)組,其中保存了公司職員的姓名和工資,利用一個索引來輸出公司職員的信息。,using System;,class EmployeeName,private string name;,public Empl
9、oyeeName(),name=new string“zhang”,”li”,”wang”;,public string this int index1,get return nameindex1;,set nameindex1=value;,class EmployeeSalary,private double salary;,public EmployeeSalary(),salary=new double,5000,3800,2900;,public double thisint index2,get return salaryindex2;,set salaryindex2=value;,定義索引器訪問員工姓名,定義索引器訪問員工工資,class AppMain,public static void Main(),EmployeeName en=new EmployeeName();,EmployeeSalary es=new EmployeeSalary();,for(int i=0;i3;i+),Console.WriteLine(“,姓名:,0,工資:,1”,eni,esi,);,利用索引器輸出員工信息,總結(jié):利用索引器可以把對象 當(dāng)作數(shù)組來訪問(實際訪問的是對象內(nèi)部的私有成員數(shù)組),從而提高代碼的可讀性。,