【回顧】C#從入門(mén)到精通第八章筆記
C#從入門(mén)到精通第八章筆記

屬性和方法
1.屬性的概念
屬性是一種用于訪問(wèn)對(duì)象或類(lèi)的特性的成員。屬性可以包括字符串的長(zhǎng)度、字體的大小、窗體的標(biāo)題和客戶(hù)的名稱(chēng)等。
屬性是成員的自然擴(kuò)展,兩者都是關(guān)聯(lián)類(lèi)型的命名成員。
屬性有訪問(wèn)器,這些訪問(wèn)器指定在它們的值被讀取或?qū)懭霑r(shí)需要執(zhí)行的語(yǔ)句。因此屬性提供了一種機(jī)制,它把讀取和寫(xiě)入對(duì)象的某些特性與一些操作關(guān)聯(lián)起來(lái)??梢韵袷褂霉矓?shù)據(jù)成員一樣使用屬性,但實(shí)際上它們是稱(chēng)為“訪問(wèn)器”的特殊方法。這使得數(shù)據(jù)在可被輕松訪問(wèn)的同時(shí),仍能提供方法的安全性和靈活性。
屬性結(jié)合了字段和方法的多個(gè)方面。
對(duì)于對(duì)象的用戶(hù),屬性顯示為字段,訪問(wèn)該屬性需要完全相同的語(yǔ)法。
對(duì)于類(lèi)的實(shí)現(xiàn)者,屬性是一個(gè)或兩個(gè)代碼塊,表示一個(gè)get訪問(wèn)器和(或)一個(gè)set訪問(wèn)器。
當(dāng)讀取屬性時(shí),執(zhí)行g(shù)et訪問(wèn)器的代碼塊。
當(dāng)向?qū)傩苑峙湟粋€(gè)新值時(shí),執(zhí)行set訪問(wèn)器的代碼塊。
不具有set訪問(wèn)器的屬性被視為只讀屬性,
不具有g(shù)et訪問(wèn)器的屬性被視為只寫(xiě)屬性,
同時(shí)具有這兩個(gè)訪問(wèn)器的屬性為可讀可寫(xiě)屬性。
注意:
屬性不能作為ref參數(shù)或out參數(shù)傳遞。
2.屬性的使用
自定義屬性在類(lèi)模塊內(nèi)是通過(guò)以下方式聲明的:
第一步,指定屬性的訪問(wèn)級(jí)別,
第二步,指定后面的屬性的類(lèi)型,
第三步,接下來(lái)是屬性的名稱(chēng),
第四步,然后是聲明get訪問(wèn)器和(或)set訪問(wèn)器的代碼模塊。
例如:
代碼如下:
public class Date
{
private int day=7;
public int Day//星期屬性,該屬性為可讀可寫(xiě)
{
get{return day;}
set
{
if((value>0)&&(value<8))
{
day=value;
}
}
}
}
說(shuō)明:
get訪問(wèn)器與方法體相似,它必須返回屬性類(lèi)型的值;
而 set訪問(wèn)器類(lèi)似于返回類(lèi)型為void的方法,它使用稱(chēng)為value的隱式參數(shù),此參數(shù)的類(lèi)型是屬性的類(lèi)型。
3.方法的概念
方法是包含一系列語(yǔ)句的代碼塊。在C#中,每個(gè)執(zhí)行指令都是在方法的上下文中完成的。
方法在類(lèi)或結(jié)構(gòu)中聲明,聲明時(shí)需要指定訪問(wèn)級(jí)別、返回值、方法名稱(chēng)及方法參數(shù),方法參數(shù)放在括號(hào)中,并用逗號(hào)隔開(kāi)。括號(hào)中沒(méi)有內(nèi)容表示聲明的方法沒(méi)有參數(shù)。
方法聲明可以包含一組特性和private、public、protected、internal4個(gè)訪問(wèn)修飾符的任何一個(gè)有效組合,還可以包含new、static、virtual、override、sealed、abstract以及extern等修飾符。
如果以下所有條件都為真,則表明所聲明的方法具有一個(gè)有效的修飾符組合。
①.該聲明包含一個(gè)有效的訪問(wèn)修飾符組合。
②.該聲明中所包含的修飾符彼此各不相同。
③.該聲明最多包含下列修飾符中的一個(gè):static、virtual和override。
④.該聲明最多包含下列修飾符中的一個(gè):new和override。
⑤.如果該聲明包含abstract修飾符,則該聲明不包含下列任何修飾符:static、virtual、sealed或extern。
⑥.如果該聲明包含private修飾符,則該聲明不包含下列任何修飾符:virtual、override或abstract。
⑦.如果該聲明包含sealed修飾符,則該聲明還包含override修飾符。
4.方法的分類(lèi)
方法分為靜態(tài)方法和非靜態(tài)方法。
(1).若一個(gè)方法聲明中含有static修飾符,則稱(chēng)該方法為靜態(tài)方法。
(2).若沒(méi)有static修飾符,則稱(chēng)該方法為非靜態(tài)方法。
下面分別對(duì)靜態(tài)方法和非靜態(tài)方法進(jìn)行介紹。
1.靜態(tài)方法
靜態(tài)方法代碼如下:【使用類(lèi)名調(diào)用靜態(tài)方法】
public static int Add(int x,int y)/定義一個(gè)靜態(tài)方法
{
return(x+y);
}
static void Main(string[]args)
{
Console.WriteLine(“結(jié)果為:“+Program.Add(3,5));
}
//使用類(lèi)名調(diào)用靜態(tài)方法
2.非靜態(tài)方法
非靜態(tài)方法是對(duì)類(lèi)的某個(gè)給定的實(shí)例進(jìn)行操作,而且可以用this來(lái)訪問(wèn)該方法。
代碼如下:
public int Add(int x,int y)
{
return x+y;
}
static void Main(string[] args)
{
Program program=new Program();//實(shí)例化類(lèi)對(duì)象
Console.WriteLine("結(jié)果為:"+program.Add(3,5));//使用類(lèi)對(duì)象調(diào)用定義的非靜態(tài)方法
}
說(shuō)明:
調(diào)用非靜態(tài)方法時(shí),也可以使用this關(guān)鍵字。
第八章完!