日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
淺析C#Calculator類(lèi)

C# Calculator類(lèi)

在C# 2.0中,除了可以對(duì)整個(gè)屬性設(shè)置public等訪(fǎng)問(wèn)修飾符外,對(duì)內(nèi)部的get/set訪(fǎng)問(wèn)器同樣可以設(shè)置訪(fǎng)問(wèn)修飾符,當(dāng)然它要受到一定的限制。由于有些限制和接口、重寫(xiě)有關(guān),我暫時(shí)不會(huì)介紹,在這里,我僅介紹訪(fǎng)問(wèn)器和屬性的訪(fǎng)問(wèn)修飾符沖突問(wèn)題。
1、如果整個(gè)屬性被設(shè)置為public,則其訪(fǎng)問(wèn)器沒(méi)有限制;
2、如果整個(gè)屬性被設(shè)置為protected internal,則訪(fǎng)問(wèn)器的訪(fǎng)問(wèn)修飾僅能設(shè)置為internal,protected或者private中的一種;
3、如果整個(gè)屬性被設(shè)置為internal或者protected,那么訪(fǎng)問(wèn)器的訪(fǎng)問(wèn)修飾只能是private。
如下例:

 
 
 
  1. publicClassA  
  2. {  
  3. privatestringm_text;  
  4. privateintm_count;  
  5. publicstringText  
  6. {  
  7. get{returnm_text;}  
  8. protectedset{m_text=value;}  
  9. }  
  10. internalintCount  
  11. {  
  12. privateget{return5;}  
  13. privateset{m_count=value}  
  14. }  

從程序的實(shí)質(zhì)來(lái)看,其實(shí)屬性就是一種特殊的方法,它等同于下面的代碼:

 
 
 
  1. public int GetAge()  
  2. {  
  3.  return m_age;  
  4. }  
  5. public void SetAge(int age)  
  6. {  
  7.  m_age = age;  

從這個(gè)意義上來(lái)理解get/set訪(fǎng)問(wèn)器的訪(fǎng)問(wèn)級(jí)別修飾,就更容易理解了。實(shí)質(zhì)上,所謂的訪(fǎng)問(wèn)器的訪(fǎng)問(wèn)級(jí)別修飾,不外乎就是對(duì)方法進(jìn)行訪(fǎng)問(wèn)級(jí)別修飾罷了。當(dāng)然,C#中提供的屬性要比訪(fǎng)問(wèn)字段的get/set方法更加簡(jiǎn)便。一般而言,如要定義方法,應(yīng)該是和一個(gè)對(duì)象的行為有關(guān),例如系列三定義的User類(lèi)中的SignIn()和SignOut()方法,它們代表的是對(duì)象User的行為:登錄和退出。

定義一個(gè)類(lèi)的方法,必須包括五個(gè)要素:方法修飾符,方法名,返回類(lèi)型,參數(shù),以及方法體,例如Add方法:

 
 
 
  1. public int Add(int x, int y)  
  2. {  
  3.  return x + y;  

public即為我們的方法修飾符,它代表了該方法能被訪(fǎng)問(wèn)的級(jí)別。當(dāng)然,修飾的方法的關(guān)鍵字還包括 static,virtual,abstract等,不過(guò)這些內(nèi)容會(huì)在以后介紹。方法名自然是Add了,自然屬于方法的名字。返回類(lèi)型為int,代表該方法會(huì)返回一個(gè)結(jié)果,該結(jié)果類(lèi)型為int類(lèi)型。參數(shù)有兩個(gè),分別為x和y,它們的類(lèi)型都是int。調(diào)用者可以通過(guò)參數(shù)傳遞值到方法體中,并對(duì)它們進(jìn)行操作。方法體則是花括號(hào)中的內(nèi)容。

假設(shè)Add方法是定義在類(lèi)Calculator中,那么該方法的調(diào)用為:

 
 
 
  1. Calculator cal = new Calculator();  
  2. int result = cal.Add(3,5); 

通過(guò)對(duì)Add的調(diào)用,并傳入3和5的參數(shù),***得到結(jié)果8,并返回。因此,此時(shí)變量result的值就為8。而***行代碼,則是利用new關(guān)鍵字對(duì)C# Calculator類(lèi)進(jìn)行實(shí)例化,獲得一個(gè)對(duì)象cal。通過(guò)對(duì)象cal,才可以調(diào)用C# Calculator類(lèi)的公共方法、屬性或字段。

為什么要進(jìn)行實(shí)例化呢?我們定義一個(gè)類(lèi)類(lèi)型,是為調(diào)用者所使用的,否則就失去其意義了。但我們定義的這樣一個(gè)類(lèi)類(lèi)型,僅僅是代表了某種格式而已,例如User類(lèi)說(shuō)明它是一個(gè)class,它擁有了一些字段、屬性和方法。通過(guò)這樣的定義,我們?cè)谑褂眠@些類(lèi)型的對(duì)象時(shí),.Net能夠識(shí)別它。而如果真正要調(diào)用這些類(lèi)型對(duì)象,就必須進(jìn)行”實(shí)例化”,這個(gè)操作就會(huì)在運(yùn)行期間,創(chuàng)建一個(gè)個(gè)對(duì)象,并被放在內(nèi)存空間中供程序調(diào)用。就好比”人”就是一個(gè)類(lèi)類(lèi)型,而某一個(gè)具體的人,才是被實(shí)例化的、真正存在的對(duì)象。要使得一個(gè)類(lèi)類(lèi)型被實(shí)例化,就需要為該類(lèi)型提供”構(gòu)造器”。構(gòu)造器是一種特殊的方法,它沒(méi)有返回類(lèi)型,且其方法名和類(lèi)型名保持一致,如C# Calculator類(lèi)的定義以及它的構(gòu)造器:

 
 
 
  1. public class Calculator  
  2. {  
  3.  public Calculator()  
  4.  {  
  5.  }  
  6.  public int Add(int x, int y)  
  7.  {  
  8.   return x + y;  
  9.  }  

Calculator()方法就是一個(gè)”構(gòu)造器”,這個(gè)構(gòu)造器并沒(méi)有參數(shù),在C#中,也被稱(chēng)為默認(rèn)的構(gòu)造器,即使不定義該構(gòu)造器,.Net也會(huì)為它默認(rèn)創(chuàng)建。例如在Calculator類(lèi)中,我們完全可以刪去Calculator()構(gòu)造器的定義。然而,一旦我們定義了有參數(shù)的構(gòu)造器時(shí),則該默認(rèn)構(gòu)造器將不存在,如果我們?cè)傩枰粠?shù)創(chuàng)建實(shí)例的話(huà),就需要顯式創(chuàng)建該構(gòu)造器了。例如之前的User類(lèi)。如果姓名和密碼是該類(lèi)一個(gè)非常重要的屬性,大部分情況下,如果要?jiǎng)?chuàng)建User對(duì)象時(shí),都需要這兩個(gè)屬性的值時(shí),我們就可以為User類(lèi)專(zhuān)門(mén)創(chuàng)建一個(gè)構(gòu)造器:

 
 
 
  1. public class User  
  2. {  
  3.  public User(string name, string password)  
  4.  {  
  5.   m_name = name;  
  6.   m_password = password;  
  7.  }   

當(dāng)前題目:淺析C#Calculator類(lèi)
標(biāo)題來(lái)源:http://www.dlmjj.cn/article/ccsisoj.html