-
123456
查看全部 -
ref 關(guān)鍵字,將值傳遞改為引用傳遞
查看全部 -
構(gòu)造方法的作用:為屬性賦值。
如果沒(méi)有顯式定義構(gòu)造方法,則會(huì)由一個(gè)默認(rèn)的無(wú)參數(shù)的構(gòu)造方法
如果顯示定義了構(gòu)造方法,則沒(méi)有默認(rèn)構(gòu)造方法
只能用 new 方法()的形式調(diào)用構(gòu)造方法
構(gòu)造方法通常生命為 public
構(gòu)造方法沒(méi)有返回值類型
構(gòu)造方法必須與類名相同
查看全部 -
限制屬性賦值就是在 set 方法中增加業(yè)務(wù)判斷也處理支路
查看全部 -
c# 封裝的快捷鍵 ctrl +r+e
查看全部 -
c# 中對(duì)象與屬性的區(qū)別。
prvate string _name;
public string Name
{
? ? set{_name=value;}
? ?get{return _name;}
}
查看全部 -
struct:
s
查看全部 -
C#中的數(shù)據(jù)類型
值類型:int char double bool
值類型變量存儲(chǔ)對(duì)象的值,賦值會(huì)創(chuàng)建值得副本,修改任何一個(gè)副本,不會(huì)影響其他的副本
引用類型:類 數(shù)組 接口 string
引用類型變量存儲(chǔ)對(duì)象的內(nèi)存地址,賦值不會(huì)創(chuàng)建值得副本,只會(huì)創(chuàng)建地址的副本,修改任何一個(gè)副本,也同時(shí)修改其他的副本。
查看全部 -
初始化:一、用有參數(shù)構(gòu)造方法初始化對(duì)象
二、用無(wú)參數(shù)構(gòu)造方法初始化對(duì)象
三、對(duì)象初始化器初始化對(duì)象(使用的是構(gòu)造方法的無(wú)參數(shù)構(gòu)造)與二相同,只是寫法更加簡(jiǎn)潔而已。
例子:Child child=new Child(){Name=“小米”,Age=55}?
or?Child Child3 = new Child{ Name = "周潤(rùn)發(fā)", Age = 5 };
查看全部 -
封裝的概念:隱藏對(duì)象的信息,留出訪問(wèn)的接口
關(guān)于封裝:
類和對(duì)象;把字段封裝成屬性;方法;構(gòu)造方法;值類型與引用類型
引用:結(jié)構(gòu) 枚舉 out ref
方法
構(gòu)造方法
查看全部 -
ref起到傳參作用:
out是獲取結(jié)果且可以返回多個(gè)值;return返回一個(gè)值。
使用Out 修飾形參必須得給形參賦值
查看全部 -
關(guān)鍵字 ref :讓值類型參數(shù)按引用類型傳參。
注意,這里的值類型不能是對(duì)象的屬性。諸如 Growth( ref c1.Age),就是錯(cuò)誤的。
正確舉例:
先定義方法,注意使用ref :static void Growth( ref int age){ age ++ ;}
然后定義一個(gè)值類型變量:int age1 = 3;
調(diào)用方法的時(shí)候,也必須使用ref :Growth( ref age1);
查看全部 -
在Main中訪問(wèn)靜態(tài)方法時(shí)不需要實(shí)例化對(duì)象便可以直接調(diào)用方法名
值類型和引用類型作為方法參數(shù)時(shí)的區(qū)別:
1、按值傳參,方法修改形參,實(shí)參不會(huì)被修改;
2、按引用傳參,方法修改形參,實(shí)參不會(huì)被修改;
查看全部 -
枚舉:限定了范圍
枚舉:
1、值類型
2、不能定義字段屬性和方法
3、枚舉值是從0遞增的整數(shù)
例子:enum Gender
//Child c1 = new Child("梁曉雪", "女", 4);//錯(cuò)誤?? ?5?? ?參數(shù) 2: 無(wú)法從“string”轉(zhuǎn)換為“Gender”?? ?
??????????? //Child c2 = new Child("劉小牛","猴",5);
??????????? //Child c2 = new Child("劉小牛", Gender.男, 5);
??????????? Child c2 = new Child("劉小牛", (Gender)0, 5);1、創(chuàng)建枚舉類型:項(xiàng)目名稱,右鍵,添加,類或新建項(xiàng)(代碼文件)
2、枚舉屬于值類型,枚舉中不能定義字段屬性和方法,枚舉值是從0開(kāi)始的整數(shù)值
3、枚舉類型限定了一組有限的值,可以在某種程度上防止錯(cuò)誤數(shù)據(jù)的輸入
查看全部 -
簡(jiǎn)單來(lái)說(shuō),struct是值類型,創(chuàng)建一個(gè)struct類型的實(shí)例被分配在棧上。class是引用類型,創(chuàng)建一個(gè)class類型實(shí)例被分配在托管堆上。但struct和class的區(qū)別遠(yuǎn)不止這么簡(jiǎn)單。 概括來(lái)講,struct和class的不同體現(xiàn)在: ●?類是引用類型,struct是值類型 ●?在托管堆上創(chuàng)建類的實(shí)例,在棧上創(chuàng)建struct實(shí)例 ●?類實(shí)例的賦值,賦的是引用地址,struct實(shí)例的賦值,賦的是值 ●?類作為參數(shù)類型傳遞,傳遞的是引用地址,struct作為參數(shù)類型傳遞,傳遞的是值 ●?類沒(méi)有默認(rèn)無(wú)參構(gòu)造函數(shù),struct有默認(rèn)無(wú)參構(gòu)造函數(shù) ●?類支持繼承,struct不支持繼承 ●?類偏向于"面向?qū)ο?,用于復(fù)雜、大型數(shù)據(jù),struct偏向于"簡(jiǎn)單值",比如小于16字節(jié),結(jié)構(gòu)簡(jiǎn)單 ●?類的成員很容易賦初值,很難給struct類型成員賦初值 ●?類的實(shí)例只能通過(guò)new?someclass()來(lái)創(chuàng)建,struct類型的實(shí)例既可以通過(guò)new?somestruct()來(lái)創(chuàng)建,也可以通過(guò)somestruct?mystruct;來(lái)創(chuàng)建 一、從賦值的角度體驗(yàn)struct和class的不同 引用類型賦值,是把地址賦值給了變量 class?program ??{ ????static?void?main(string[]?args) ????{ ??????sizeclass?sizeclass?=?new?sizeclass(){width?=?10,?length?=?10}; ??????console.writeline("賦值前:width={0},length={1}",?sizeclass.width,?sizeclass.length); ? ??????var?copyofsizeclass?=?sizeclass; ??????copyofsizeclass.length?=?5; ??????copyofsizeclass.width?=?5; ??????console.writeline("賦值后:width={0},length={1}",sizeclass.width,?sizeclass.length); ??????console.readkey(); ????} ??} ? ??public?class?sizeclass ??{ ????public?int?width?{?get;?set;?} ????public?int?length?{?get;?set;?} ??} ? ??public?struct?sizestruct ??{ ????public?int?width?{?get;?set;?} ????public?int?length?{?get;?set;?} ??} 運(yùn)行結(jié)果如下圖所示:以上,當(dāng)把sizeclass賦值給copyofsize變量的時(shí)候,是把sizeclass所指向的地址賦值給了copyofsize變量,2個(gè)變量同時(shí)指向同一個(gè)地址。所以,當(dāng)改變copyofsizeclass變量的值,也相當(dāng)于改變了sizeclass的值。 struct類型賦值,是完全拷貝,在棧上多了一個(gè)完全一樣的變量 class?program ??{ ????static?void?main(string[]?args) ????{ ??????sizestruct?sizestruct?=?new?sizestruct(){length?=?10,?width?=?10}; ??????console.writeline("賦值前:width={0},length={1}",?sizestruct.width,?sizestruct.length); ? ??????var?copyofsizestruct?=?sizestruct; ??????copyofsizestruct.length?=?5; ??????copyofsizestruct.width?=?5; ??????console.writeline("賦值后:width={0},length={1}",?sizestruct.width,?sizestruct.length); ??????console.readkey(); ????} ??} 程序運(yùn)行結(jié)果如下圖所示:以上,當(dāng)把sizestruct賦值給copyofsizestruct變量的時(shí)候,是完全拷貝,改變copyofsizestruct的值不會(huì)影響到sizestruct。 二、從參數(shù)傳值角度體驗(yàn)struct和class的不同 引用類型參數(shù)傳遞的是地址 class?program ??{ ????static?void?main(string[]?args) ????{ ??????listtemp?=?new?list(){"my","god"}; ??????temp.foreach(t?=>?console.write(t?+?"?")); ??????console.readkey(); ????} ? ????public?static?void?changereferencetype(listlist) ????{ ??????list?=?new?list(){"hello",?"world"}; ????} ??} ??? 運(yùn)行結(jié)果:my?god 為什么不是hello?world? →棧上的temp指向托管堆上的一個(gè)集合實(shí)例 →當(dāng)temp放到changereferencetype(temp)方法中,本質(zhì)是把temp指向的地址賦值給了變量list →在changereferencetype(listlist)方法內(nèi)部,又把變量list的指向了另外一個(gè)集合實(shí)例地址 →但temp的指向地址一直沒(méi)有改變 我們?cè)賮?lái)改變changereferencetype(listlist)內(nèi)部實(shí)現(xiàn)方式,其它不變。 class?program ??{ ????static?void?main(string[]?args) ????{ ??????listtemp?=?new?list(){"my","god"};????? ??????changereferencetype(temp); ??????temp.foreach(t?=>?console.write(t?+?"?")); ??????console.readkey(); ????} ? ????public?static?void?changereferencetype(listlist) ????{ ??????list.clear(); ??????list.add("hello"); ??????list.add("world"); ????} ??} ??? 運(yùn)行結(jié)果:hello?world 為什么不是my?god??? →棧上的temp指向托管堆上的一個(gè)集合實(shí)例 →當(dāng)temp放到changereferencetype(temp)方法中,本質(zhì)是把temp指向的地址賦值給了變量list →在changereferencetype(listlist)方法內(nèi)部,把temp和list共同指向的實(shí)例清空,又添加"hello"和"world"2個(gè)元素 →由于list和temp指向的實(shí)例是一樣的,所以改變list指向的實(shí)例就等同于改變temp指向的實(shí)例 以上,很好地說(shuō)明了:引用類型參數(shù)傳遞的是地址。 值類型struct參數(shù)傳遞的是值 ??? class?program ??{ ????static?void?main(string[]?args) ????{ ??????size?s?=?new?size(){length?=?10,?width?=?10}; ??????changestructtype(s); ??????console.write("length={0},width={1}",?s.length,s.width); ??????console.readkey(); ????} ? ????public?static?void?changestructtype(size?size) ????{ ??????size.length?=?0; ??????size.width?=?0; ????} ??} ? ??public?struct?size ??{ ????public?int?length?{?get;?set;?} ????public?int?width?{?get;?set;?} ??}
查看全部
舉報(bào)