




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章:VisualC#2008資料型別林佩蓉老師
弘光科技大學(xué)資訊工程學(xué)系九十七學(xué)年度第二學(xué)期10/30/20221程式設(shè)計(jì)(二)C#programming第3章:VisualC#2008資料型別林佩蓉老師
本章大綱3-1:共通型別系統(tǒng)(CommonTypeSystem)介紹3-2:變數(shù)(Variable)與常數(shù)(Constant)介紹3-3:VisualC#2008關(guān)鍵字3-4:VisualC#2008運(yùn)算子3-5:is和as運(yùn)算子3-6:資料型別種類(Datatypesclass)3-7:var匿名型別(AnonymousTypes)3-8:enum、struct、Nullable資料型別介紹3-9:資料型別的轉(zhuǎn)換方法10/30/20222程式設(shè)計(jì)(二)C#programming本章大綱3-1:共通型別系統(tǒng)(CommonTypeSys3-1:共通型別系統(tǒng)(CommonTypeSystem)介紹3-1-1:CLR、CTS與CLS三者關(guān)係3-1-2:實(shí)值型別與參考型別(ValueType&ReferenceType)3-1-3:裝箱與拆箱(Boxing&Unboxing)3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換(Implicitconversion&Explicitconversion)10/30/20223程式設(shè)計(jì)(二)C#programming3-1:共通型別系統(tǒng)(CommonTypeSystem)3-1-1:CLR、CTS與CLS三者關(guān)係共通語言執(zhí)行時(shí)期環(huán)境(CommonLanguageRuntime,CLR)是.NETFramework中最基本的部份,包含程式碼的編譯﹑安全性的控管等。共通型別系統(tǒng)(CommonTypeSystem,CTS)是被用於.NETFramework上所使用的每一種語言。共通語言規(guī)格(CommonLanguageSpecification,CLS)是用來描述不同語言(包含:VB,C#C++等)的共同特色。CLS用CTS來定義語言的資料型別:IntergerVB/intC#(System.Int32型別)10/30/20224程式設(shè)計(jì)(二)C#programming3-1-1:CLR、CTS與CLS三者關(guān)係共通語言執(zhí)行時(shí)期環(huán)3-1-2:實(shí)值型別與參考型別實(shí)值型別(ValueType):宣告實(shí)值型別的變數(shù)會(huì)儲(chǔ)存資料。指派一個(gè)實(shí)值型別變數(shù)給其他實(shí)值型別變數(shù),會(huì)「複製所包含的值」,常見C#實(shí)值型別如:byte、int、double、bool、char等等。參考型別(ReferenceType):宣告參考型別的變數(shù)是儲(chǔ)存實(shí)際資料的參考。參考型別變數(shù)的指派會(huì)「複製物件的參考」,但不會(huì)複製物件本身。C#常見的參考型別如:類別、介面、字串、陣列、委派、指標(biāo)等等。10/30/20225程式設(shè)計(jì)(二)C#programming3-1-2:實(shí)值型別與參考型別實(shí)值型別(ValueType3-1-2:實(shí)值型別與參考型別在執(zhí)行.NET的程式時(shí),對(duì)於不同型別,CLR(CommonLanguageRuntime)會(huì)在不同的地方分配資源空間。對(duì)於實(shí)值型別(ValueType),當(dāng)宣告一個(gè)變數(shù)時(shí),CLR會(huì)在Stack(堆疊)中配置一塊空間,設(shè)定該變數(shù)的值時(shí),其值也直接存放於該空間中,如右圖:
而對(duì)於參考型別(ReferenceType),CLR則在Stack中配置一塊存放記憶體位址的空間,在初始化該型別的實(shí)體時(shí)(ex:new),則在Heap(堆積)上配置該型別所需的空間,再將該空間的位址傳回給存放在Stack中的那塊空間,如下圖:
這些由CLR自動(dòng)配置與管理的記憶體,被稱為Managed資源;反之,不受CLR管理的便被稱為Unmanaged資源(ex:
Stream、與資料庫的連結(jié)、COM物件……等)。10/30/20226程式設(shè)計(jì)(二)C#programming3-1-2:實(shí)值型別與參考型別在執(zhí)行.NET的程式時(shí),對(duì)於不3-1-2:實(shí)值型別與參考型別Stack記憶體:Stack記憶體通常用來存放方法內(nèi)所宣告的區(qū)域變數(shù)或參數(shù),當(dāng)方法執(zhí)行完畢後,會(huì)自動(dòng)從Stack中被釋放(移除)。Heap記憶體:
Heap記憶體通常用來存放方法內(nèi)所宣告的物件,也就是當(dāng)您使用new關(guān)鍵字將類別實(shí)體化為物件時(shí),該物件的參考記憶體位置會(huì)存放在Stack,而物件本身會(huì)存放在Heap記憶體,二個(gè)不同的變數(shù)能夠參考相同的物件。10/30/20227程式設(shè)計(jì)(二)C#programming3-1-2:實(shí)值型別與參考型別Stack記憶體:10/22/實(shí)值型別[P3-5]如果建立兩個(gè)實(shí)值型別的變數(shù)i和j(如下所示),那麼i和j彼此之間完全無關(guān)聯(lián):inti=10;intj=20;它們的記憶體位置並不相同:
如果變更其中一個(gè)變數(shù)的值,另一個(gè)變數(shù)當(dāng)然不會(huì)受到影響。10/30/20228程式設(shè)計(jì)(二)C#programming實(shí)值型別[P3-5]如果建立兩個(gè)實(shí)值型別的變數(shù)i和j參考型別[P3-6]Employeeee1=newEmployee();Employeeee2=ee1;現(xiàn)在,由於在C#中類別是參考型別,因此ee1也稱為Employee的參考。上述兩行程式碼中的第一行會(huì)在記憶體中建立Employee的執(zhí)行個(gè)體,並且將ee1設(shè)定為參考這個(gè)執(zhí)行個(gè)體。當(dāng)您將ee2設(shè)為等於ee1時(shí),它會(huì)包含記憶體中這個(gè)類別參考的複本。此時(shí)如果變更ee2上的屬性,ee1上的屬性將會(huì)反映這些變更,這是因?yàn)檫@兩個(gè)都指向記憶體中的同一個(gè)物件,如下所示:
10/30/20229程式設(shè)計(jì)(二)C#programming參考型別[P3-6]Employeeee1=new3-1-3:裝箱與拆箱(Boxing&Unboxing)裝箱(Boxing):將[實(shí)值型別]轉(zhuǎn)換成[參考型別]的過程拆箱(Unboxing):將[參考型別]轉(zhuǎn)換成[實(shí)值型別]的過程10/30/202210程式設(shè)計(jì)(二)C#programming3-1-3:裝箱與拆箱(Boxing&Unboxing)3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換
(Implicitconversion&Explicitconversion)
ch03\ImplicitExplicitConversion隱含轉(zhuǎn)換就是將值域範(fàn)圍較小的資料型別轉(zhuǎn)換成值域範(fàn)圍較大的資料型別,由於此種轉(zhuǎn)換方式是由系統(tǒng)自動(dòng)處理,故又稱「自動(dòng)轉(zhuǎn)換」,並且在轉(zhuǎn)型之後資料不會(huì)因此而失真。(小大)P3-3210/30/202211程式設(shè)計(jì)(二)C#programming3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換
(I3-1-4:隱含轉(zhuǎn)換&明確3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換
(Implicitconversion&Explicitconversion)
ch03\ImplicitExplicitConversion明確轉(zhuǎn)換就是將值域範(fàn)圍較大的資料型別強(qiáng)制轉(zhuǎn)換成值域範(fàn)圍較小的資料型別,又稱為「強(qiáng)制轉(zhuǎn)換」,在轉(zhuǎn)型之後資料通常會(huì)有失真的問題。(大小)Cast:無條件捨去Convert:四捨五入10/30/202212程式設(shè)計(jì)(二)C#programming3-1-4:隱含轉(zhuǎn)換&明確3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換
3-2:變數(shù)(Variable)與常數(shù)(Constant)介紹3-2-1:變數(shù)(Variable)3-2-2:常數(shù)(Constant)3-2-3:變數(shù)與常數(shù)命名技巧10/30/202213程式設(shè)計(jì)(二)C#programming3-2:變數(shù)(Variable)與常數(shù)(Constant)介3-2-1:變數(shù)(Variable)[P3-9~P3-10]變數(shù)(Variable)是指「程式中資料最基本的儲(chǔ)存單位,是記憶體中用來存放資料的一塊儲(chǔ)存區(qū)域」。實(shí)體化變數(shù)(InstanceVariables)類別變數(shù)(ClassVariables)區(qū)域變數(shù)(LocalVariables)參數(shù)變數(shù)(Parameters)變數(shù)的宣告方式
存取修飾詞資料型別變數(shù)名稱;
public int依C#命名規(guī)則 private long protected float internal char10/30/202214程式設(shè)計(jì)(二)C#programming3-2-1:變數(shù)(Variable)[P3-9~P3-10成員的存取限制public:公用成員,所有其它(非此類別)的函式或類別皆可以存取此成員。private:私有成員,所有其它(非此類別)的函式或類別皆不可以存取此成員。protected:保護(hù)成員,所有其它(非此類別)的函式或類別皆不可以存取此成員,但繼承此類別的類別(子類別)可以存取此成員。10/30/202215程式設(shè)計(jì)(二)C#programming成員的存取限制public:公用成員,所有其它(非此類別)的3-2-1:變數(shù)(Variable)ch03\Variable_ex類別變數(shù)區(qū)域變數(shù)參數(shù)變數(shù)10/30/202216程式設(shè)計(jì)(二)C#programming3-2-1:變數(shù)(Variable)ch03\Vari3-2-2:常數(shù)(Constant)ch03\Constant_ex常數(shù)(Constant)是指「用來存放固定不變的數(shù)值」,常見的典型範(fàn)例就是圓周率π為3.14此值是不會(huì)變動(dòng)的,這種永遠(yuǎn)不會(huì)變動(dòng)的值就可以宣告成常數(shù)來使用,其他常見的例子有性別、血型、星座、生肖、出生年月日等,這些資訊對(duì)於個(gè)人而言都是固定不會(huì)變動(dòng)的。[存取修飾詞]const[資料型別][變數(shù)名稱]=[預(yù)設(shè)值];
public constdoublePI=3.14;10/30/202217程式設(shè)計(jì)(二)C#programming3-2-2:常數(shù)(Constant)ch03\Cons3-2-2:常數(shù)(Constant)ch03\Constant_ex10/30/202218程式設(shè)計(jì)(二)C#programming3-2-2:常數(shù)(Constant)ch03\Cons3-2-3:變數(shù)與常數(shù)命名技巧常用的命名法有以下兩種:巴斯卡(Pascal)命名法駱駝(Camel)命名法10/30/202219程式設(shè)計(jì)(二)C#programming3-2-3:變數(shù)與常數(shù)命名技巧常用的命名法有以下兩種:10/3-3:VisualC#2008關(guān)鍵字關(guān)鍵字(Keyword)就是「對(duì)編譯器具有特殊意義的文字所組成的保留識(shí)別項(xiàng)」,這些保留識(shí)別項(xiàng)不能當(dāng)成變數(shù)(Variable)來使用,主要是留給程式語言指令所使用,故又稱保留字(ReservedWord)。內(nèi)容關(guān)鍵字(ContextualKeywords)是指在特定的程式內(nèi)容才具有特殊意義,例如:宣告LINQ語言。10/30/202220程式設(shè)計(jì)(二)C#programming3-3:VisualC#2008關(guān)鍵字關(guān)鍵字(Keywo3-4:VisualC#2008運(yùn)算子3-4-1:運(yùn)算子優(yōu)先順序和結(jié)合性3-4-2:一元運(yùn)算子(Unaryoperators)3-4-3:算術(shù)運(yùn)算子(Arithmeticoperators)3-4-4:串連運(yùn)算子(Concatenationoperators)3-4-5:關(guān)係運(yùn)算子(Relationaloperators)3-4-6:邏輯運(yùn)算子(Logicaloperators)3-4-7:指定運(yùn)算子(Assignmentoperators)10/30/202221程式設(shè)計(jì)(二)C#programming3-4:VisualC#2008運(yùn)算子3-4-1:運(yùn)算子3-5:is和as運(yùn)算子ch03\IsOperators_ex
3-5-1:isis運(yùn)算子用來檢查物件(變數(shù))是否屬於某資料型別。10/30/202222程式設(shè)計(jì)(二)C#programming3-5:is和as運(yùn)算子ch03\IsOperators3-5:is和as運(yùn)算子ch03\AsOperators_ex3-5-2:as運(yùn)算子as運(yùn)算子主要用來執(zhí)行相容參考型別之間的轉(zhuǎn)換,as運(yùn)算子作用如同轉(zhuǎn)型作業(yè)。P6-23P6-26P4-20P3-2410/30/202223程式設(shè)計(jì)(二)C#programming3-5:is和as運(yùn)算子ch03\AsOperators3-6:資料型別種類(Datatypesclass)在VisualC#2008資料型別的分類有二種:一、內(nèi)建資料型別,二、使用者定義資料型別。「內(nèi)建資料型別」部分最常見的有int、string、bool、char、double等。「使用者定義資料型別」部分常見的就是interface或class。10/30/202224程式設(shè)計(jì)(二)C#programming3-6:資料型別種類(Datatypesclass)在V3-7:var匿名型別(AnonymousTypes)var主要作用有二:
作為「隱含型別」(ImplicitlyTyped)用來推斷(Inferred)區(qū)域變數(shù)或陣列的型別,透過var關(guān)鍵字來指示編譯器判斷初始化陳述句右邊的運(yùn)算式,推斷變數(shù)或陣列項(xiàng)目的資料型別。
作為「匿名型別」(AnonymousTypes)用來提供簡便的方式不用明確定義型別就能將唯讀屬性集封裝到單一物件,也就是在使用new實(shí)體化時(shí)不用指明類別名稱。10/30/202225程式設(shè)計(jì)(二)C#programming3-7:var匿名型別(AnonymousTypes)va3-7:var匿名型別(AnonymousTypes)
ch03\var_ex10/30/202226程式設(shè)計(jì)(二)C#programming3-7:var匿名型別(AnonymousTypes)
3-8:enum、struct、Nullable資料型別介紹3-8-1:列舉(enum)資料型別3-8-2:結(jié)構(gòu)(struct)資料型別3-8-3:Nullable類別10/30/202227程式設(shè)計(jì)(二)C#programming3-8:enum、struct、Nullable資料型別介紹3-8-1:列舉(enum)資料型別ch03\Enum_ex
enum是一種用來宣告列舉型別(EnumerationType)的關(guān)鍵字,是一組列舉清單項(xiàng)目的具名常數(shù)所構(gòu)成的特殊型別,enum主要作用在於提高程式的可讀性與易維護(hù)性。當(dāng)列舉宣告完成時(shí),只要輸入SuperStar.就會(huì)自動(dòng)帶出其相關(guān)成員參數(shù)供選用。[存取修飾詞]enum[列舉名稱]:[資料型別]{
[成員1],
[成員2],
……
[成員n]}10/30/202228程式設(shè)計(jì)(二)C#programming3-8-1:列舉(enum)資料型別ch03\Enum_10/30/202229程式設(shè)計(jì)(二)C#programming10/22/202229程式設(shè)計(jì)(二)C#program3-8-2:結(jié)構(gòu)(struct)資料型別ch03\Struct_ex
struct是一種用來宣告結(jié)構(gòu)的關(guān)鍵字,在結(jié)構(gòu)中包含相關(guān)變數(shù),可將結(jié)構(gòu)視為變數(shù)群組。以書籍(Book)來說,若要設(shè)計(jì)其結(jié)構(gòu),他可能包含幾個(gè)相關(guān)變數(shù),如:書籍名稱(BookName)、作者(Author)、出版日期(PublishDate)、價(jià)格(Cost)等。宣告方式:叫用方式:[存取修飾詞]struct[結(jié)構(gòu)名稱]{
[存取修飾詞][資料型別][變數(shù)名稱];
[存取修飾詞][資料型別][變數(shù)名稱];….}[結(jié)構(gòu)名稱][變數(shù)名稱];10/30/202230程式設(shè)計(jì)(二)C#programming3-8-2:結(jié)構(gòu)(struct)資料型別ch03\Str叫用方式宣告方式10/30/202231程式設(shè)計(jì)(二)C#programming叫用方式宣告方式10/22/202231程式設(shè)計(jì)(二)C#3-8-3:Nullable類別ch03\Nullable_exNullable類別是.NETFramework2.0版之後所提供的功能,其功能在於用來支援「實(shí)值型別」存放null值,此null值相當(dāng)於VisualBasic2008的Nothing,所以Nullable類別的作用就是「讓實(shí)值型別變數(shù)可以存放虛值(null)」。在實(shí)務(wù)上常用null來表示”未知的值”,表示暫未存放內(nèi)容,在未宣告成Nullable之前不能存放null值。10/30/202232程式設(shè)計(jì)(二)C#programming3-8-3:Nullable類別ch03\Nullabl3-8-3:Nullable類別ch03\Nullable_exNullable<int>double?10/30/202233程式設(shè)計(jì)(二)C#programming3-8-3:Nullable類別ch03\Nullabl3-9:資料型別的轉(zhuǎn)換方法3-9-1:System.Convert轉(zhuǎn)換[P3-32]3-9-2:型別.Parse方法[P3-33]3-9-3:指定轉(zhuǎn)換(Cast)[P3-34]10/30/202234程式設(shè)計(jì)(二)C#programming3-9:資料型別的轉(zhuǎn)換方法3-9-1:System.Conv3-9:資料型別的轉(zhuǎn)換方法(System.Convert)
ch03\SystemConvert_ex
System.Convert類別主要作用在於將基底資料型別轉(zhuǎn)換為其他的型別資料。10/30/202235程式設(shè)計(jì)(二)C#programming3-9:資料型別的轉(zhuǎn)換方法(System.Convert)
Parse()方法主要將指定字串的內(nèi)容轉(zhuǎn)換成指定的型別資料,處理對(duì)象是字串(String)。3-9:資料型別的轉(zhuǎn)換方法(型別.Parse方法)
ch03\Parse_ex
P3-33txtDateInput.Text10/30/202236程式設(shè)計(jì)(二)C#programmingParse()方法主要將指定字串的內(nèi)容轉(zhuǎn)換成指定的型別資料3-9-3:指定轉(zhuǎn)換(Cast)
ch03\Case_ex
指定轉(zhuǎn)換(Cast)就是將資料型別強(qiáng)制轉(zhuǎn)換成指定的資料型別,此種轉(zhuǎn)換的能力最為強(qiáng)大,我們稱這種強(qiáng)制轉(zhuǎn)換的方式又稱為鑄型(Cast)。使用Cast最常犯的錯(cuò)誤就是轉(zhuǎn)換的內(nèi)容為字串型態(tài)。10/30/202237程式設(shè)計(jì)(二)C#programming3-9-3:指定轉(zhuǎn)換(Cast)
HomeworkIDeadline:2009/03/12作業(yè)共五題,請(qǐng)參考投影片P.36~P.41說明壓縮整個(gè)方案目錄(U99B999-HW1)上傳至310/30/202238程式設(shè)計(jì)(二)C#programmingHomeworkIDeadline:2009/03/12SolutionforHW1(1Solution,5projects)1.以自己的學(xué)號(hào)為名建立一個(gè)方案.ex.U99B999-HW12.在方案中分別建立5個(gè)專案:U99B999-HW1-1(Console)U99B999-HW1-2(Console)U99B999-HW1-3(Console)U99B999-HW1-4(WindowsForm)U99B999-HW1-5(WindowsForm)10/30/202239程式設(shè)計(jì)(二)C#programmingSolutionforHW1(1Solution,5U99B999-HW1-1(Console)在U99B999-HW1中建立一個(gè)專案命名為U99B999-HW1-1由鍵盤輸入年度所得(income),依下列稅率計(jì)算應(yīng)繳稅額:若income<100萬元,稅率15%若100萬元<=income<200萬元,稅率20%若income>=200萬,稅率40%10/30/202240程式設(shè)計(jì)(二)C#programmingU99B999-HW1-1(Console)在U99B99U99B999-HW1-2(Console)在U99B999-HW1中建立一個(gè)專案命名為U99B999-HW1-2由鍵盤輸入四個(gè)字元的密碼,密碼為”ymca”,若輸入的密碼正確,則顯示”login成功,歡迎進(jìn)入本系統(tǒng)”,再離開for迴圈;若密碼錯(cuò)誤,最多允許連續(xù)輸入三次,若三次都錯(cuò)誤,則顯示”密碼錯(cuò)誤,無法進(jìn)入!”10/30/202241程式設(shè)計(jì)(二)C#programmingU99B999-HW1-2(Console)在U99B99U99B999-HW1-3(Console)在U99B999-HW1中建立一個(gè)專案命名為U99B999-HW1-3由鍵盤依序輸入二個(gè)數(shù)值運(yùn)算元以及一個(gè)算術(shù)運(yùn)算子(+,-,*,/)之一,再由電腦計(jì)算出其計(jì)算結(jié)果提示:請(qǐng)用switchcase判別10/30/202242程式設(shè)計(jì)(二)C#programmingU99B999-HW1-3(Console)在U99B99U99B999-HW1-4(WindowsForm)利用enum陳述句設(shè)計(jì)一個(gè)作業(yè)系統(tǒng)(OperatingSystem)的列舉,其成員為:WindowsVista,DOS,Linux,Solaris,OS2以及Macintosh等六種經(jīng)典作業(yè)系統(tǒng)。並且提供使用者輸入整數(shù)數(shù)字1-6,來選擇所喜愛的作業(yè)系統(tǒng),當(dāng)輸入數(shù)值範(fàn)圍不在1-6之間時(shí)則顯示”數(shù)值不在列舉值範(fàn)圍”,執(zhí)行結(jié)果請(qǐng)見下圖。提示:請(qǐng)參考Enum_ex範(fàn)例(P3-26~P3-28)10/30/202243程式設(shè)計(jì)(二)C#programmingU99B999-HW1-4(WindowsForm)利用U99B999-HW1-5(WindowsForm)請(qǐng)利用sturct結(jié)構(gòu)設(shè)計(jì)一個(gè)學(xué)生(Sudent)個(gè)人資料結(jié)構(gòu),其結(jié)構(gòu)內(nèi)變數(shù)成員,包括:學(xué)號(hào)(StdID)-文字型態(tài),姓名(Name)-文字型態(tài),性別(Sex)-布林型態(tài),計(jì)概(Computer)-倍精浮點(diǎn)數(shù)並且可存放null值[練習(xí)Nullable]提示:請(qǐng)參考Nullable_ex範(fàn)例(P3-30~P3-31)10/30/202244程式設(shè)計(jì)(二)C#programmingU99B999-HW1-5(WindowsForm)請(qǐng)利AnyQuestions?10/30/202245程式設(shè)計(jì)(二)C#programmingAnyQuestions?10/22/202245程式設(shè)計(jì)第3章:VisualC#2008資料型別林佩蓉老師
弘光科技大學(xué)資訊工程學(xué)系九十七學(xué)年度第二學(xué)期10/30/202246程式設(shè)計(jì)(二)C#programming第3章:VisualC#2008資料型別林佩蓉老師
本章大綱3-1:共通型別系統(tǒng)(CommonTypeSystem)介紹3-2:變數(shù)(Variable)與常數(shù)(Constant)介紹3-3:VisualC#2008關(guān)鍵字3-4:VisualC#2008運(yùn)算子3-5:is和as運(yùn)算子3-6:資料型別種類(Datatypesclass)3-7:var匿名型別(AnonymousTypes)3-8:enum、struct、Nullable資料型別介紹3-9:資料型別的轉(zhuǎn)換方法10/30/202247程式設(shè)計(jì)(二)C#programming本章大綱3-1:共通型別系統(tǒng)(CommonTypeSys3-1:共通型別系統(tǒng)(CommonTypeSystem)介紹3-1-1:CLR、CTS與CLS三者關(guān)係3-1-2:實(shí)值型別與參考型別(ValueType&ReferenceType)3-1-3:裝箱與拆箱(Boxing&Unboxing)3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換(Implicitconversion&Explicitconversion)10/30/202248程式設(shè)計(jì)(二)C#programming3-1:共通型別系統(tǒng)(CommonTypeSystem)3-1-1:CLR、CTS與CLS三者關(guān)係共通語言執(zhí)行時(shí)期環(huán)境(CommonLanguageRuntime,CLR)是.NETFramework中最基本的部份,包含程式碼的編譯﹑安全性的控管等。共通型別系統(tǒng)(CommonTypeSystem,CTS)是被用於.NETFramework上所使用的每一種語言。共通語言規(guī)格(CommonLanguageSpecification,CLS)是用來描述不同語言(包含:VB,C#C++等)的共同特色。CLS用CTS來定義語言的資料型別:IntergerVB/intC#(System.Int32型別)10/30/202249程式設(shè)計(jì)(二)C#programming3-1-1:CLR、CTS與CLS三者關(guān)係共通語言執(zhí)行時(shí)期環(huán)3-1-2:實(shí)值型別與參考型別實(shí)值型別(ValueType):宣告實(shí)值型別的變數(shù)會(huì)儲(chǔ)存資料。指派一個(gè)實(shí)值型別變數(shù)給其他實(shí)值型別變數(shù),會(huì)「複製所包含的值」,常見C#實(shí)值型別如:byte、int、double、bool、char等等。參考型別(ReferenceType):宣告參考型別的變數(shù)是儲(chǔ)存實(shí)際資料的參考。參考型別變數(shù)的指派會(huì)「複製物件的參考」,但不會(huì)複製物件本身。C#常見的參考型別如:類別、介面、字串、陣列、委派、指標(biāo)等等。10/30/202250程式設(shè)計(jì)(二)C#programming3-1-2:實(shí)值型別與參考型別實(shí)值型別(ValueType3-1-2:實(shí)值型別與參考型別在執(zhí)行.NET的程式時(shí),對(duì)於不同型別,CLR(CommonLanguageRuntime)會(huì)在不同的地方分配資源空間。對(duì)於實(shí)值型別(ValueType),當(dāng)宣告一個(gè)變數(shù)時(shí),CLR會(huì)在Stack(堆疊)中配置一塊空間,設(shè)定該變數(shù)的值時(shí),其值也直接存放於該空間中,如右圖:
而對(duì)於參考型別(ReferenceType),CLR則在Stack中配置一塊存放記憶體位址的空間,在初始化該型別的實(shí)體時(shí)(ex:new),則在Heap(堆積)上配置該型別所需的空間,再將該空間的位址傳回給存放在Stack中的那塊空間,如下圖:
這些由CLR自動(dòng)配置與管理的記憶體,被稱為Managed資源;反之,不受CLR管理的便被稱為Unmanaged資源(ex:
Stream、與資料庫的連結(jié)、COM物件……等)。10/30/202251程式設(shè)計(jì)(二)C#programming3-1-2:實(shí)值型別與參考型別在執(zhí)行.NET的程式時(shí),對(duì)於不3-1-2:實(shí)值型別與參考型別Stack記憶體:Stack記憶體通常用來存放方法內(nèi)所宣告的區(qū)域變數(shù)或參數(shù),當(dāng)方法執(zhí)行完畢後,會(huì)自動(dòng)從Stack中被釋放(移除)。Heap記憶體:
Heap記憶體通常用來存放方法內(nèi)所宣告的物件,也就是當(dāng)您使用new關(guān)鍵字將類別實(shí)體化為物件時(shí),該物件的參考記憶體位置會(huì)存放在Stack,而物件本身會(huì)存放在Heap記憶體,二個(gè)不同的變數(shù)能夠參考相同的物件。10/30/202252程式設(shè)計(jì)(二)C#programming3-1-2:實(shí)值型別與參考型別Stack記憶體:10/22/實(shí)值型別[P3-5]如果建立兩個(gè)實(shí)值型別的變數(shù)i和j(如下所示),那麼i和j彼此之間完全無關(guān)聯(lián):inti=10;intj=20;它們的記憶體位置並不相同:
如果變更其中一個(gè)變數(shù)的值,另一個(gè)變數(shù)當(dāng)然不會(huì)受到影響。10/30/202253程式設(shè)計(jì)(二)C#programming實(shí)值型別[P3-5]如果建立兩個(gè)實(shí)值型別的變數(shù)i和j參考型別[P3-6]Employeeee1=newEmployee();Employeeee2=ee1;現(xiàn)在,由於在C#中類別是參考型別,因此ee1也稱為Employee的參考。上述兩行程式碼中的第一行會(huì)在記憶體中建立Employee的執(zhí)行個(gè)體,並且將ee1設(shè)定為參考這個(gè)執(zhí)行個(gè)體。當(dāng)您將ee2設(shè)為等於ee1時(shí),它會(huì)包含記憶體中這個(gè)類別參考的複本。此時(shí)如果變更ee2上的屬性,ee1上的屬性將會(huì)反映這些變更,這是因?yàn)檫@兩個(gè)都指向記憶體中的同一個(gè)物件,如下所示:
10/30/202254程式設(shè)計(jì)(二)C#programming參考型別[P3-6]Employeeee1=new3-1-3:裝箱與拆箱(Boxing&Unboxing)裝箱(Boxing):將[實(shí)值型別]轉(zhuǎn)換成[參考型別]的過程拆箱(Unboxing):將[參考型別]轉(zhuǎn)換成[實(shí)值型別]的過程10/30/202255程式設(shè)計(jì)(二)C#programming3-1-3:裝箱與拆箱(Boxing&Unboxing)3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換
(Implicitconversion&Explicitconversion)
ch03\ImplicitExplicitConversion隱含轉(zhuǎn)換就是將值域範(fàn)圍較小的資料型別轉(zhuǎn)換成值域範(fàn)圍較大的資料型別,由於此種轉(zhuǎn)換方式是由系統(tǒng)自動(dòng)處理,故又稱「自動(dòng)轉(zhuǎn)換」,並且在轉(zhuǎn)型之後資料不會(huì)因此而失真。(小大)P3-3210/30/202256程式設(shè)計(jì)(二)C#programming3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換
(I3-1-4:隱含轉(zhuǎn)換&明確3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換
(Implicitconversion&Explicitconversion)
ch03\ImplicitExplicitConversion明確轉(zhuǎn)換就是將值域範(fàn)圍較大的資料型別強(qiáng)制轉(zhuǎn)換成值域範(fàn)圍較小的資料型別,又稱為「強(qiáng)制轉(zhuǎn)換」,在轉(zhuǎn)型之後資料通常會(huì)有失真的問題。(大小)Cast:無條件捨去Convert:四捨五入10/30/202257程式設(shè)計(jì)(二)C#programming3-1-4:隱含轉(zhuǎn)換&明確3-1-4:隱含轉(zhuǎn)換&明確轉(zhuǎn)換
3-2:變數(shù)(Variable)與常數(shù)(Constant)介紹3-2-1:變數(shù)(Variable)3-2-2:常數(shù)(Constant)3-2-3:變數(shù)與常數(shù)命名技巧10/30/202258程式設(shè)計(jì)(二)C#programming3-2:變數(shù)(Variable)與常數(shù)(Constant)介3-2-1:變數(shù)(Variable)[P3-9~P3-10]變數(shù)(Variable)是指「程式中資料最基本的儲(chǔ)存單位,是記憶體中用來存放資料的一塊儲(chǔ)存區(qū)域」。實(shí)體化變數(shù)(InstanceVariables)類別變數(shù)(ClassVariables)區(qū)域變數(shù)(LocalVariables)參數(shù)變數(shù)(Parameters)變數(shù)的宣告方式
存取修飾詞資料型別變數(shù)名稱;
public int依C#命名規(guī)則 private long protected float internal char10/30/202259程式設(shè)計(jì)(二)C#programming3-2-1:變數(shù)(Variable)[P3-9~P3-10成員的存取限制public:公用成員,所有其它(非此類別)的函式或類別皆可以存取此成員。private:私有成員,所有其它(非此類別)的函式或類別皆不可以存取此成員。protected:保護(hù)成員,所有其它(非此類別)的函式或類別皆不可以存取此成員,但繼承此類別的類別(子類別)可以存取此成員。10/30/202260程式設(shè)計(jì)(二)C#programming成員的存取限制public:公用成員,所有其它(非此類別)的3-2-1:變數(shù)(Variable)ch03\Variable_ex類別變數(shù)區(qū)域變數(shù)參數(shù)變數(shù)10/30/202261程式設(shè)計(jì)(二)C#programming3-2-1:變數(shù)(Variable)ch03\Vari3-2-2:常數(shù)(Constant)ch03\Constant_ex常數(shù)(Constant)是指「用來存放固定不變的數(shù)值」,常見的典型範(fàn)例就是圓周率π為3.14此值是不會(huì)變動(dòng)的,這種永遠(yuǎn)不會(huì)變動(dòng)的值就可以宣告成常數(shù)來使用,其他常見的例子有性別、血型、星座、生肖、出生年月日等,這些資訊對(duì)於個(gè)人而言都是固定不會(huì)變動(dòng)的。[存取修飾詞]const[資料型別][變數(shù)名稱]=[預(yù)設(shè)值];
public constdoublePI=3.14;10/30/202262程式設(shè)計(jì)(二)C#programming3-2-2:常數(shù)(Constant)ch03\Cons3-2-2:常數(shù)(Constant)ch03\Constant_ex10/30/202263程式設(shè)計(jì)(二)C#programming3-2-2:常數(shù)(Constant)ch03\Cons3-2-3:變數(shù)與常數(shù)命名技巧常用的命名法有以下兩種:巴斯卡(Pascal)命名法駱駝(Camel)命名法10/30/202264程式設(shè)計(jì)(二)C#programming3-2-3:變數(shù)與常數(shù)命名技巧常用的命名法有以下兩種:10/3-3:VisualC#2008關(guān)鍵字關(guān)鍵字(Keyword)就是「對(duì)編譯器具有特殊意義的文字所組成的保留識(shí)別項(xiàng)」,這些保留識(shí)別項(xiàng)不能當(dāng)成變數(shù)(Variable)來使用,主要是留給程式語言指令所使用,故又稱保留字(ReservedWord)。內(nèi)容關(guān)鍵字(ContextualKeywords)是指在特定的程式內(nèi)容才具有特殊意義,例如:宣告LINQ語言。10/30/202265程式設(shè)計(jì)(二)C#programming3-3:VisualC#2008關(guān)鍵字關(guān)鍵字(Keywo3-4:VisualC#2008運(yùn)算子3-4-1:運(yùn)算子優(yōu)先順序和結(jié)合性3-4-2:一元運(yùn)算子(Unaryoperators)3-4-3:算術(shù)運(yùn)算子(Arithmeticoperators)3-4-4:串連運(yùn)算子(Concatenationoperators)3-4-5:關(guān)係運(yùn)算子(Relationaloperators)3-4-6:邏輯運(yùn)算子(Logicaloperators)3-4-7:指定運(yùn)算子(Assignmentoperators)10/30/202266程式設(shè)計(jì)(二)C#programming3-4:VisualC#2008運(yùn)算子3-4-1:運(yùn)算子3-5:is和as運(yùn)算子ch03\IsOperators_ex
3-5-1:isis運(yùn)算子用來檢查物件(變數(shù))是否屬於某資料型別。10/30/202267程式設(shè)計(jì)(二)C#programming3-5:is和as運(yùn)算子ch03\IsOperators3-5:is和as運(yùn)算子ch03\AsOperators_ex3-5-2:as運(yùn)算子as運(yùn)算子主要用來執(zhí)行相容參考型別之間的轉(zhuǎn)換,as運(yùn)算子作用如同轉(zhuǎn)型作業(yè)。P6-23P6-26P4-20P3-2410/30/202268程式設(shè)計(jì)(二)C#programming3-5:is和as運(yùn)算子ch03\AsOperators3-6:資料型別種類(Datatypesclass)在VisualC#2008資料型別的分類有二種:一、內(nèi)建資料型別,二、使用者定義資料型別。「內(nèi)建資料型別」部分最常見的有int、string、bool、char、double等。「使用者定義資料型別」部分常見的就是interface或class。10/30/202269程式設(shè)計(jì)(二)C#programming3-6:資料型別種類(Datatypesclass)在V3-7:var匿名型別(AnonymousTypes)var主要作用有二:
作為「隱含型別」(ImplicitlyTyped)用來推斷(Inferred)區(qū)域變數(shù)或陣列的型別,透過var關(guān)鍵字來指示編譯器判斷初始化陳述句右邊的運(yùn)算式,推斷變數(shù)或陣列項(xiàng)目的資料型別。
作為「匿名型別」(AnonymousTypes)用來提供簡便的方式不用明確定義型別就能將唯讀屬性集封裝到單一物件,也就是在使用new實(shí)體化時(shí)不用指明類別名稱。10/30/202270程式設(shè)計(jì)(二)C#programming3-7:var匿名型別(AnonymousTypes)va3-7:var匿名型別(AnonymousTypes)
ch03\var_ex10/30/202271程式設(shè)計(jì)(二)C#programming3-7:var匿名型別(AnonymousTypes)
3-8:enum、struct、Nullable資料型別介紹3-8-1:列舉(enum)資料型別3-8-2:結(jié)構(gòu)(struct)資料型別3-8-3:Nullable類別10/30/202272程式設(shè)計(jì)(二)C#programming3-8:enum、struct、Nullable資料型別介紹3-8-1:列舉(enum)資料型別ch03\Enum_ex
enum是一種用來宣告列舉型別(EnumerationType)的關(guān)鍵字,是一組列舉清單項(xiàng)目的具名常數(shù)所構(gòu)成的特殊型別,enum主要作用在於提高程式的可讀性與易維護(hù)性。當(dāng)列舉宣告完成時(shí),只要輸入SuperStar.就會(huì)自動(dòng)帶出其相關(guān)成員參數(shù)供選用。[存取修飾詞]enum[列舉名稱]:[資料型別]{
[成員1],
[成員2],
……
[成員n]}10/30/202273程式設(shè)計(jì)(二)C#programming3-8-1:列舉(enum)資料型別ch03\Enum_10/30/202274程式設(shè)計(jì)(二)C#programming10/22/202229程式設(shè)計(jì)(二)C#program3-8-2:結(jié)構(gòu)(struct)資料型別ch03\Struct_ex
struct是一種用來宣告結(jié)構(gòu)的關(guān)鍵字,在結(jié)構(gòu)中包含相關(guān)變數(shù),可將結(jié)構(gòu)視為變數(shù)群組。以書籍(Book)來說,若要設(shè)計(jì)其結(jié)構(gòu),他可能包含幾個(gè)相關(guān)變數(shù),如:書籍名稱(BookName)、作者(Author)、出版日期(PublishDate)、價(jià)格(Cost)等。宣告方式:叫用方式:[存取修飾詞]struct[結(jié)構(gòu)名稱]{
[存取修飾詞][資料型別][變數(shù)名稱];
[存取修飾詞][資料型別][變數(shù)名稱];….}[結(jié)構(gòu)名稱][變數(shù)名稱];10/30/202275程式設(shè)計(jì)(二)C#programming3-8-2:結(jié)構(gòu)(struct)資料型別ch03\Str叫用方式宣告方式10/30/202276程式設(shè)計(jì)(二)C#programming叫用方式宣告方式10/22/202231程式設(shè)計(jì)(二)C#3-8-3:Nullable類別ch03\Nullable_exNullable類別是.NETFramework2.0版之後所提供的功能,其功能在於用來支援「實(shí)值型別」存放null值,此null值相當(dāng)於VisualBasic2008的Nothing,所以Nullable類別的作用就是「讓實(shí)值型別變數(shù)可以存放虛值(null)」。在實(shí)務(wù)上常用null來表示”未知的值”,表示暫未存放內(nèi)容,在未宣告成Nullable之前不能存放null值。10/30/202277程式設(shè)計(jì)(二)C#programming3-8-3:Nullable類別ch03\Nullabl3-8-3:Nullable類別ch03\Nullable_exNullable<int>double?10/30/202278程式設(shè)計(jì)(二)C#programming3-8-3:Nullable類別ch03\Nullabl3-9:資料型別的轉(zhuǎn)換方法3-9-1:System.Convert轉(zhuǎn)換[P3-32]3-9-2:型別.Parse方法[P3-33]3-9-3:指定轉(zhuǎn)換(Cast)[P3-34]10/30/202279程式設(shè)計(jì)(二)C#programming3-9:資料型別的轉(zhuǎn)換方法3-9-1:System.Conv3-9:資料型別的轉(zhuǎn)換方法(System.Convert)
ch03\SystemConvert_ex
System.Convert類別主要作用在於將基底資料型別轉(zhuǎn)換為其他的型別資料。10/30/202280程式設(shè)計(jì)(二)C#programming3-9:資料型別的轉(zhuǎn)換方法(System.Convert)
Parse()方法主要將指定字串的內(nèi)容轉(zhuǎn)換成指定的型別資料,處理對(duì)象是字串(String)。3-9:資料型別的轉(zhuǎn)換方法(型別.Parse方法)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全知識(shí)法試題及答案
- 2025年電動(dòng)汽車電池?zé)峁芾硐到y(tǒng)熱管理效率優(yōu)化與創(chuàng)新研究報(bào)告
- 安全技能比武試題及答案
- 安全工作教育試題及答案
- 物業(yè)品質(zhì)培訓(xùn)課件目錄
- 魔鏡檢測皮膚培訓(xùn)課件
- 重疾保險(xiǎn)培訓(xùn)課件
- 《編制說明蒙農(nóng)1號(hào)蒙古冰草提純復(fù)壯技術(shù)規(guī)程》
- 中班家園共育課件
- 冬季生產(chǎn)安全培訓(xùn)
- 上海市重點(diǎn)建設(shè)項(xiàng)目社會(huì)穩(wěn)定風(fēng)險(xiǎn)評(píng)估報(bào)告編制指南2025
- 數(shù)字化情報(bào)資源管理-洞察闡釋
- 北京市2025學(xué)年高二(上)第一次普通高中學(xué)業(yè)水平合格性考試物理試題(解析版)
- 2025年四川省高考物理試卷真題(含答案)
- 炸雞店的產(chǎn)品創(chuàng)新與口味調(diào)研
- 陜西省銅川市2025年八下英語期末監(jiān)測試題含答案
- 社區(qū)工作者綜合能力考試基礎(chǔ)知識(shí)試題及答案
- 山西焦煤集團(tuán)所屬煤炭子公司招聘筆試題庫2025
- 墊付醫(yī)療費(fèi)協(xié)議書
- 2025年福建省廈門市中考物理模擬試卷
- 2024年陜西省普通高中學(xué)業(yè)水平合格性考試語文試題(原卷版+解析版)
評(píng)論
0/150
提交評(píng)論