細節01給C#代碼加注釋的意義
細節02裝箱和拆箱
細節03理解值類(lèi)型和引用類(lèi)型
值類(lèi)型變量不能為null,必須具有一個(gè)確定的值。引用類(lèi)型被賦值前的值都是null
細節04隱式轉換和顯示轉換
細節05前綴方式增1和減1運算符
細節06理解移位運算符
>>運算符將第一個(gè)操作數向右移動(dòng)第二個(gè)操作數所指定的位數
<<運算符將第一個(gè)操作數向左移動(dòng)第二個(gè)操作數所指定的位數
注意幾點(diǎn):
1.如果第一個(gè)操作數為int或uint,則移位數由第二個(gè)操作數的低五位給出
2.如果第一個(gè)操作數為long或ulong,則移位數由第二個(gè)操作數的低六位給出
例如:int i; i=48>>3 則i=6
48對應的二進(jìn)制為00110000,右移3位后的二進(jìn)制值為00000110,則十進(jìn)制為6
細節07理解運算的次序
細節08理解參數的類(lèi)型
輸入參數,輸出參數out,引用參數ref,參數數組params
細節09重載方法
細節10虛方法與重寫(xiě)方法
虛方法指允許被其子類(lèi)重新定義的方法,在聲明時(shí)需要用virtual修飾符
重寫(xiě)也稱(chēng)為覆蓋override,是在派生類(lèi)使用override修飾符重寫(xiě)基類(lèi)中帶有virtual修飾符的虛方法
注意:override修飾符不能與new,static,或virtual修飾符同時(shí)使用
,另外,重寫(xiě)方法只能用于重寫(xiě)基類(lèi)中的虛方法,不能用來(lái)單獨聲明方法。
派生類(lèi)中使用new關(guān)鍵字可以實(shí)現向基類(lèi)成員隱藏繼承成員。
public class Child:Parent
{
{return "隱藏一般方法"}
}
細節11結構和類(lèi)的區別
細節12什么是封裝
細節13什么是繼承
細節14什么是多態(tài)
細節15作用域的概念
細節16使用索引器
索引器就是能夠讓類(lèi)像一個(gè)數組似的被訪(fǎng)問(wèn)。索引器與屬性很相似,也有g(shù)et和set訪(fǎng)問(wèn)器。
public string this[int Ind]
{
{}
}
shapeName=s[Count];
細節17base和this關(guān)鍵字
base關(guān)鍵字用于派生類(lèi)中訪(fǎng)問(wèn)基類(lèi)的成員。使用范圍如下:
1.調用基類(lèi)中已被其他方法重寫(xiě)的方法
2.指定創(chuàng )建派生類(lèi)實(shí)例時(shí)應調用的基類(lèi)構造函數。
細節18理解靜態(tài)修飾符
細節19。net的object類(lèi)
System.Object類(lèi)的核心成員如下:
Equals():確定兩個(gè)object實(shí)例是否相等
Finalize():釋放資源并執行其他清理操作。
GetHashCode():返回一個(gè)能夠標識內存中指定對象的整數
GetType():獲取當前實(shí)例的System.Type()對象
MemberwiseClone():返回當前對象逐個(gè)成員的副本
ToString()
細節20細說(shuō)可空類(lèi)型
在訪(fǎng)問(wèn)數據庫數據時(shí)可能獲得的數據為空值,這時(shí)可以考慮使用可空類(lèi)型來(lái)定義字段或方法以更好的使用類(lèi)來(lái)操作數據。
int?i=null;
int?等價(jià)于System.Nullable<int>
細節21分部類(lèi)
public partial class Person
{}
開(kāi)發(fā)分部類(lèi)時(shí),要成為同一類(lèi)型的各個(gè)部分的所有分部類(lèi)類(lèi)型定義必須都在同一個(gè)程序集或者同一??熘?。(。exe或dll)中進(jìn)行定義,分部類(lèi)定義不能跨越多個(gè)模塊。
細節22匿名方法
匿名方法:在事件注冊時(shí)直接將一個(gè)委托與一段代碼相關(guān)聯(lián),這種代碼就是匿名方法。
Sendbtn.Click+=delegate{"sda"};定義委托的后面要加上分號。
delegate void Msg(string str)//定義委托
public void GetMsg(string str)//定義與關(guān)聯(lián)委托匹配的方法
{Response.Write("dads");}
Msg d =delegate(string str){Response.Write(str);}//委托與匿名方法的關(guān)聯(lián)
Msg d= new Msg(GetMsg);//委托與命名方法關(guān)聯(lián)
Sendbtn.Click+=delegate{Response.Write("safsaf");};//事件處理程序為匿名方法
細節23。net框架提供的屬性(attribute)
。net框架提供了內置屬性,這些屬性都是從System.Attribute類(lèi)派生而來(lái)的。
Conditional屬性是System.Diagnostics.ConditionalAttribute的別名,該屬性?xún)H用于方法聲明,即僅在C#編譯器定義了作為屬性參數出現的符號時(shí),他才指定方法作為類(lèi)的一部分
[Conditional(“參數”)]
啟用調試狀態(tài)時(shí)才作為類(lèi)的一部分可以被調用,
Obsolete屬性用于定義正被替換或者不再有效的代碼。該屬性有兩個(gè)參數Message和IsError,Message用于設置錯誤信息字符串,IsError默認為false表示在編譯代碼時(shí)發(fā)出警告信息,True表示編譯器將生成錯誤信息。
細節24自定義屬性類(lèi)(Attribute)
自定義屬性類(lèi)派生于System。Attribute類(lèi)
自定義屬性類(lèi)的特定:
1.使用AttributeUsage屬性可以限制屬性的用法。
2.在A(yíng)ttributeUsage屬性中可以指定是否可以多次使用屬性。
3.可以設置屬性參數。
}
細節25泛型
細節26包含/委托
類(lèi)似適配器模式,把類(lèi)中定義對象,然后自定義方法,然后在方法體中用到定義的對象中的方法。
細節27實(shí)現迭代器
迭代器是可以返回相同類(lèi)型值的有序序列的一段代碼,可用做方法、運算符或get訪(fǎng)問(wèn)器的代碼體??梢栽陬?lèi)中實(shí)現多個(gè)迭代器,每個(gè)迭代器都必須像類(lèi)成員一樣有唯一的名稱(chēng)。并且可以再foreach語(yǔ)句中被客戶(hù)端代碼調用。迭代器的返回類(lèi)型必須為IEnumerable或IEnumerator中任意一種,也可以是實(shí)現這兩個(gè)接口的類(lèi)。
IEnumerable接口:包含了。net框架用于從對象中提取元素的方法。如果類(lèi)包含一個(gè)元素的集合,并希望其他代碼段使用foreach循環(huán)語(yǔ)句遍歷該集合中的每一個(gè)元素則應該在類(lèi)上實(shí)現該接口。
IEnumerable接口值包含一個(gè)方法定義GetEnumerator(),用于返回一個(gè)循環(huán)訪(fǎng)問(wèn)集合的枚舉數。
IEnumerator接口:支持對非泛型集合的簡(jiǎn)單迭代。該接口定義了一個(gè)屬性和兩個(gè)方法
1.Object Current{get}屬性,獲取集合中的當前元素
2.bool MoveNext()方法,訪(fǎng)問(wèn)集合的下一個(gè)元素
3.void Reset()方法,設置枚舉數為其初始位置。
使用時(shí)必須引用System。Collection命名空間
public class Car : IEnumerable, IEnumerator