目錄
10余年的盧氏網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整盧氏建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“盧氏網(wǎng)站設(shè)計”,“盧氏網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。類
1.類的概述
1.1 類的定義
1.2 程序和類
2.聲明類(類定義)
2.1 分部類和分布類型?
3.類成員
3.1 字段
3.1.1 字段的語法
3.1.2 顯示字段和隱式字段的初始化
3.1.3 字段的修飾符:readonly關(guān)鍵字&const關(guān)鍵字
3.1.4 靜態(tài)字段
3.2 常量
3.2.1 使用readonly關(guān)鍵字&const關(guān)鍵字來修飾字段的區(qū)別
3.3 屬性
3.3.1 屬性的組成
3.3.2 靜態(tài)屬性
3.4 構(gòu)造函數(shù)
3.4.1 實(shí)例構(gòu)造函數(shù)
3.4.2 靜態(tài)構(gòu)造函數(shù)
3.5 析構(gòu)函數(shù)
3.6 索引器
3.6.1 this關(guān)鍵字
3.6.2 索引器的語法
4.類的實(shí)例
4.1實(shí)例化
4.1.1 實(shí)例對象
4.1.2 對象初始化語句
? C#是一種面向?qū)ο蟮恼Z言,這點(diǎn)與C語言不同,C語言是一種面向過程的語言。除此之外,面向?qū)ο蟮恼Z言還有C++、Java等。而面向?qū)ο笳Z言的一個基本特征是它們都有類,類是C#中比較復(fù)雜的數(shù)據(jù)類型。
?本章將先講明 什么是類,并說明類由什么組成,組成類的函數(shù)成員和數(shù)據(jù)成員怎么用,接著講如何實(shí)例一個類。
?就像第五章數(shù)據(jù)類型里對類型的解釋一樣。
帶到現(xiàn)實(shí)中來看,大象這個物種就是一個類。大象這個物種的共同的特性(比如 年齡、分布區(qū)域、歸屬群落、性別,體型等)和行為(吃草、繁衍、行走、潛水等)就是類的公共屬性和行為。類的實(shí)例就是大象這個物種中的一頭大象。
1.1 類的定義? 類是一個能存儲數(shù)據(jù)并執(zhí)行代碼的數(shù)據(jù)結(jié)構(gòu)。
類包含數(shù)據(jù)成員和函數(shù)成員。(一個C#類可以有任意數(shù)目的數(shù)據(jù)成員和函數(shù)成員)
一個運(yùn)行中的C#程序是一組相互作用的類型對象,它們中大部分都是類的實(shí)例。
類的聲明定義類的特征和成員。
聲明一個類并不創(chuàng)建類的實(shí)例,而是用于創(chuàng)建實(shí)例的模板。
2.1 分部類和分布類型?聲明類的語法:
class 大象(類的名稱)? ? ?//聲明類
{
? string sex;????????????????//數(shù)據(jù)成員聲明(類的成員)
? ...
? void swim(){...}? ? ? //函數(shù)成員聲明(類的成員)
? ...
}?
聲明類必須包含:
- 類的名稱
- 類的成員
- 類的特征(封裝、繼承、多態(tài),第十四章會講)
類聲明可以分割為幾個分布類的聲明
分布類的使用要求:?
//示例:
partical class A //類名稱相同
{
int a;
}
partical class A
{
int b;
}
(注意:本章主講實(shí)例成員,靜態(tài)成員放在十三章講)
在類聲明中定義的類成員有9種成員類型。
其中字段和方法是最重要的類成員類型。(本章不會介紹事件)
?
類聲明相當(dāng)于藍(lán)圖,通過藍(lán)圖可以創(chuàng)建多個類的實(shí)例。
? 通過類創(chuàng)建的實(shí)例,其中的類成員分為兩種:實(shí)例成員和類成員。
字段是在類或結(jié)構(gòu)中直接聲明的任意類型的變量。
3.1.1 字段的語法3.1.2 顯示字段和隱式字段的初始化聲明字段的語法:
?????????????????????數(shù)據(jù)類型? 字段名;
例如:
?????????????????????int a;
隱式字段初始化:若字段被聲明且沒有被賦值,則為隱式初始化。
不同類型隱式初始化的默認(rèn)值:?
被readonly和const修飾的字段一旦賦值便不能再被修改。
readonly關(guān)鍵字&const的區(qū)別:
3.1.4 靜態(tài)字段語法:
? 訪問修飾符 const 數(shù)據(jù)類型 變量名=值;
? 訪問修飾符 readonly 數(shù)據(jù)類型 變量名;
若使用static關(guān)鍵字修飾字段,則字段為靜態(tài)字段。
? 靜態(tài)字段被類的所有實(shí)例所共享,所有實(shí)例都訪問同一內(nèi)存位置。
靜態(tài)字段必須通過類來訪問,不能像實(shí)例字段一樣通過類的對象的實(shí)例來訪問字段。
語法:
? 訪問修飾符 static 數(shù)據(jù)類型 變量名;? ? ? ? //靜態(tài)字段定義
? 訪問修飾符 數(shù)據(jù)類型 變量名;? ? ? ? ? ? ? ? ?//實(shí)例字段定義
實(shí)例1:
class People
{
//聲明靜態(tài)字段
public static string Name;
//聲明實(shí)例字段
public int Age;
}
class Program
{
static void Main(string[] args)
{
//實(shí)例字段通過實(shí)例對象訪問
People one=new People();
one.Age=18;
//靜態(tài)字段只能通過類名訪問
People.Name="人類";
}
}
實(shí)例2:
3.2 常量? 常量就是被const修飾的字段。
常量的特點(diǎn):
屬性是對字段的擴(kuò)展。
根據(jù)面向?qū)ο笳Z言的封裝思想(見第十章),字段最好設(shè)置為private。這樣能防止客戶端直接對字段進(jìn)行篡改,從而保證了內(nèi)部成員的完整性的同時,也可以更好的為程序員提供編寫的便利。而屬性的作用就是為了訪問類中的私有字段。
3.3.1 屬性的組成屬性的語法:
? 訪問修飾符? 數(shù)據(jù)類型? 字段名{get{return 字段名;}set{字段名=value;}}
屬性由set訪問器和get訪問器組成。
屬性可以只包含set或get,當(dāng)只包含一個訪問器時,另一個可以省略、或者在前面加訪問修飾符private。
屬性除了開頭的語法,還有三種寫法:
屬性的示例:設(shè)置一個人的年齡字段,將賦值范圍設(shè)置在0-150之間
public class People
{
//私有字段聲明
private int age;
private string name;
private string sex;
private string high;
//公有屬性:屬性類型必須和字段屬性一致
public? string? Age
{
//get訪問器:負(fù)責(zé)對字段值進(jìn)行讀?。ǚ祷刈侄危? get
{
return age;
}
//set訪問器:負(fù)責(zé)對字段值進(jìn)行賦值(把用戶傳入的值賦給字段)
//set訪問器里有隱式參數(shù)value
set
{
//設(shè)置年齡范圍在0-150之間
if(value<0 || value>150)
{
//拋出異常代碼
throw(new ArgumentOutOfRangeException("AgeIntProPery"),value,"年齡必須在0-150之間"));
}
//value是隱式參數(shù):表示用戶傳入的值
age=value;
}
}
//只讀屬性
public string Sex
{
get
{
return sex;
}
}
//只寫屬性
public string Name
{
private get
{
return name;
}
set
{
name=value;
}
}
//自動實(shí)現(xiàn)屬性
public string High
{
get;set;
}
}
屬性字段命名規(guī)范:
? 靜態(tài)屬性與靜態(tài)字段類似。?若用static來修飾屬性,則屬性為靜態(tài)屬性。
靜態(tài)屬性有以下特點(diǎn):
實(shí)例:
public class People
{
//靜態(tài)字段
public static string Name;
//靜態(tài)屬性
public static string Name
{
get
{
return Name;
}
set
{
Name = value;
}
}
}
3.4 構(gòu)造函數(shù)構(gòu)造函數(shù)主要用于初始化類的實(shí)例狀態(tài)。當(dāng)我們用構(gòu)造函數(shù)創(chuàng)建一個對象時,構(gòu)造函數(shù)會為對象分配空間,并初始化類的成員。
使用構(gòu)造函數(shù)的要求:
構(gòu)造函數(shù)分為兩種:實(shí)例構(gòu)造函數(shù)、靜態(tài)構(gòu)造函數(shù)。
3.4.1 實(shí)例構(gòu)造函數(shù)實(shí)例構(gòu)造函數(shù)用于創(chuàng)建和初始化類的實(shí)例。
其中使用new運(yùn)算符創(chuàng)建對象的過程,其實(shí)是在調(diào)用實(shí)例構(gòu)造函數(shù)來初始化類中所有實(shí)例成員。
實(shí)例構(gòu)造函數(shù)的特點(diǎn):
使用實(shí)例構(gòu)造函數(shù)的條件:
//實(shí)例構(gòu)造函數(shù)示例:
class People
{
private string name;
//只讀屬性
public string Name
{
get
{
return name;
}
}
//實(shí)例構(gòu)造函數(shù)
//被public關(guān)鍵字修飾的構(gòu)造函數(shù),稱為公共構(gòu)造函數(shù)
//被private關(guān)鍵字修飾的構(gòu)造函數(shù),稱為私有構(gòu)造函數(shù)
public People()
{
name="憨憨一號";
}
public people(string name)
{
//this關(guān)鍵字指代當(dāng)前類的實(shí)例,可以理解為當(dāng)前實(shí)例對象的引用。
this.name=name;
}
}
class Program
{
static void Main(string[] args)
{
People one=new People();
People two=new People("憨憨二號");
Console.Writeline(one.Name); //打印“憨憨一號”
Console.Writeline(two.Name); //打印“憨憨二號”
}
}
注意:如果一個類只定義了一個或多個私有構(gòu)造函數(shù),而沒有其他公共構(gòu)造函數(shù),則其他類就不能通過調(diào)用該類的私有構(gòu)造函數(shù)來創(chuàng)建類的實(shí)例。
私有構(gòu)造函數(shù)最典型的應(yīng)用是設(shè)計模式中單例模式的實(shí)現(xiàn)。
單例模式是C#中的一種設(shè)計模式,他是指在設(shè)計一個類時,需要保證整個程序在運(yùn)行期間只存在一個實(shí)例對象。
//設(shè)計模式中單例模式的實(shí)現(xiàn):
class People
{
//聲明私有字段
private string name;
//聲明一個公開的、靜態(tài)的、類類型的變量
public static People people;
//聲明屬性
public string Name
{
get{return name;}
}
//私有構(gòu)造函數(shù),只能在類的內(nèi)部調(diào)用
//也就是說用私有構(gòu)造函數(shù)只能在類定義時被實(shí)例化
private People()
{
Console.Writeline("私有函數(shù)被調(diào)用");
this.name="Learning Hard";
}
//靜態(tài)方法,用于返回類的實(shí)例
public static People GetInstance()
{
//將實(shí)例對象的引用賦值給變量
people=new People();
return people;
}
}
class Program
{
static void Main(string[] args)
{
//通過調(diào)用GetInstance()靜態(tài)方法返回一個Person的實(shí)例
//此時不能使用new運(yùn)算符來創(chuàng)建實(shí)例,即不能使用People one=new People()來創(chuàng)建實(shí)例
People one=People.GetInstance();
Console.Writeline("類實(shí)例的Name屬性為{0}",one.Name);
}
}
3.4.2 靜態(tài)構(gòu)造函數(shù)靜態(tài)構(gòu)造函數(shù)用于初始化類中的靜態(tài)成員。
在創(chuàng)建第一個實(shí)例或引用任何靜態(tài)成員之前,CLR(公共語言運(yùn)行時)都將自動調(diào)用靜態(tài)構(gòu)造函數(shù)。
class People
{
private static string name;
//聲明屬性
public static string Name
{
get{return name;}
}
static People()
{
Console.WriteLine("靜態(tài)函數(shù)被調(diào)用");
name="Learning Hard";
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(People.Name);
Console.WriteLine(People.Name);
}
}
結(jié)果如下:
從上述代碼我們可知靜態(tài)構(gòu)造函數(shù)有以下特點(diǎn):
析構(gòu)函數(shù)用于類銷毀之前釋放類實(shí)例所使用的托管和非托管資源。
析構(gòu)函數(shù)的作用:
對于C#應(yīng)用程序所創(chuàng)建的大多數(shù)對象,都可以使用.NET框架的垃圾回收器(GC)來隱式地執(zhí)行內(nèi)存管理任務(wù),但如創(chuàng)建了一個封裝非托管資源的對象,在應(yīng)用程序使用完這些非托管資源之后,垃圾回收器就需要運(yùn)行對象的析構(gòu)函數(shù)(即Finalize方法)來釋放這些資源。
使用析構(gòu)函數(shù)的要求:
代碼示例:
class People
{
//析構(gòu)函數(shù)
~People()
{
Console.WriteLine("析構(gòu)函數(shù)被調(diào)用");
}
}
//該析構(gòu)函數(shù)隱式調(diào)用了基類Object的Finalize方法,上面代碼中的析構(gòu)函數(shù)將被隱式轉(zhuǎn)化為以下代碼
//
//override
protectd override void Finalize()
{
try
{
Console.WriteLine("析構(gòu)函數(shù)被調(diào)用");
}
finally
{
//調(diào)用基類方法
base.Finalize();
}
}
3.6 索引器當(dāng)一個類包含數(shù)組成員時,使用索引器可以大大地簡化類中數(shù)組的訪問。
3.6.1 this關(guān)鍵字? this關(guān)鍵字在類中使用,是對當(dāng)前實(shí)例的引用。
this關(guān)鍵字的使用要求:
this關(guān)鍵字的用途:
//實(shí)例:創(chuàng)建一個方法,將一個恒定值與輸入的值作比較,返回大值
class Program
{
private int a;
//this.a為恒定值,而a為輸入的形參(形參名與變量名相同是不推薦的哦)
public int Add(int a)
{
return a>this.a
?a
:this.a;
}
}
3.6.2 索引器的語法索引器的定義類似屬性,也具有g(shù)et訪問器和set訪問器。
索引器的語法格式:
訪問修飾符? ?數(shù)據(jù)類型? this[索引類型 index]
{
? get{//返回類中某個元素}
? set{//對類中數(shù)組元素賦值}
}
//其中數(shù)據(jù)類型指的是要存取的數(shù)組的類型
//索引類型表示該索引器使用哪一個類型的索引來存取數(shù)組元素(可以為整形或字符串型)
示例:索引器也是一種針對私有字段進(jìn)行訪問的方式
class People
{
//可容納10個整數(shù)的整數(shù)數(shù)組
private int[] intarray = new int[10];
//索引器的定義
//this表示所操作的是類對象的數(shù)組成員(可以簡單理解為索引器的名稱,注意索引器不能自定義名稱)
public int this[int index]
{
get{return intarray[index];}
set{intarray[index] = value;}
}
}
class Program
{
static void Main(string[] args)
{
People one=new People();
one[0]=1;
one[1]=2;
one[2]=3;
one[3]=4;
}
}
類的聲明只是用于創(chuàng)建類的實(shí)例的藍(lán)圖。一旦類被聲明,就可以創(chuàng)建類的實(shí)例。
4.1實(shí)例化前面介紹了類中可以創(chuàng)建的類成員,但想要訪問這些實(shí)例成員,必須通過類的實(shí)例對象來完成。而要得到一個類的實(shí)例對象,就必須先聲明一個該類類型的變量,然后使用new運(yùn)算符后跟類的實(shí)例構(gòu)造函數(shù)來完成實(shí)例化。
4.1.1 實(shí)例對象實(shí)例對象由變量和對象創(chuàng)建表達(dá)式組成。
4.1.2 對象初始化語句類的實(shí)例語法: 類類型 變量 = new 類類型();
//類類型 變量? ? ? ? ? ? ? ? ? ?是創(chuàng)建變量
//new 類類型();? ??????是對象創(chuàng)建表達(dá)式
對象初始化語句擴(kuò)展了創(chuàng)建語法,在表達(dá)式尾部放置一組成員初始化語句。
? 利用對象初始化語句,可以創(chuàng)建新的對象實(shí)例,設(shè)置字段和屬性的值。
兩種語法:
? new TypeName? ? ? ? ?{變量名=初始值,變量名=初始值,...}
? new TypeName(參數(shù)){變量名=初始值,變量名=初始值,...}
注意:
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
本文題目:【C#基礎(chǔ)學(xué)習(xí)】第十一章、類-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://muchs.cn/article6/dsgpig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、動態(tài)網(wǎng)站、營銷型網(wǎng)站建設(shè)、網(wǎng)站制作、電子商務(wù)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容