寫了那麼多年C ,但一直不知道的事兒系列之2

2021-10-25 11:44:45 字數 2660 閱讀 4326

26、介面實現命名衝突:通過使用顯示介面來解決,即,在實現介面時,參考:returntype inte***cename.methodname(params);同時,需要使用顯示轉換來訪問需要的功能。

27、【.net 基礎類庫預定義介面】構建可列舉型別ienumerable和ienumerator,適用foreach關鍵字允許遍歷任何陣列型別的內容,若乙個類中,某乙個屬性是乙個陣列,則只需要將類實現ienumeable介面的getenumerator()方法,在方法中返回該屬性的getenumerator()方法即可。【當該屬性為私有屬性時適用,否則,直接在foreach處用該屬性既可以】

public class partialclass :ienumerable

;console.writeline("partialclass");

}ienumerator ienumerable.getenumerator()

}

28、用yield關鍵字構建迭代器方法,當我們希望返回能被foreach語法處理的區域性資料時,該語法很有用。

yield官方說明:如果你在語句中使用yield上下文關鍵字,則意味著它在其**現的方法、運算子或get訪問器是迭代器。 通過使用yield定義迭代器,可在實現自定義集合型別的 ienumerator 和 ienumerable 模式時無需其他顯式類(保留列舉狀態的類,有關示例,請參閱 ienumerator)。

private string stringarr = new string[4];

public partialclass()

;console.writeline("partialclass");

}public ienumerable getarrdatas(bool returnrevesed)

}else

}}

29、【.net 基礎類庫預定義介面】構建可轉殖的物件(icloneable),其中,當類中不包含引用型別變數時,可以返回this.memberwiseclone()方法逐個複製該類中的每乙個字段,但如果包括引用型別時,memberwiseclone()將這些引用複製到物件中(淺複製),若要實現深複製,需要在轉殖過程中建立各個引用型別變數的新例項。

30、比較物件之icomparable和icomparer,icomparable介面,需要實現compareto方法,分別用1,-1和0判斷兩個物件的大小,1是大於,-1是小於,0是等於;當需要指定多個排序順序時,使用icomparer介面,與icomparable介面不同,icomparer介面不是在要排序的型別中,而是在許多輔助類中實現,其中每個排序各有乙個依據(如暱稱、id等)。

//輔助類的實現

public class petnamecomparer :icomparer

}//使用

array.sort(list,new petnamecomparer);

//自定義屬性、自定義排序型別

//在型別裡

public class car : icomparable}}

//使用

array.sort(list,car.sortbypetname);

31、集合,泛型集合與非泛型集合

裝箱與拆箱:裝箱指顯示地將值型別分配給system.object變數的過程;拆箱就是指把儲存在物件引用中的值轉換回棧上的相應值型別。

int myint = 25;

//將int裝箱為object引用

object boxedint = myint;

//將引用拆箱為相應的int

int unboxedint = (int) boxedint;

非泛型集合arraylist所操作的是system.object資料,在add時(在傳遞給需要object的方法時),實際上值物件會自動裝箱,但使用型別索引器從arraylist中獲取項時,則必須使用轉換操作,即堆分配的物件拆箱成棧分配的整數,因此當資料量大時,需要考慮效能問題。

推薦使用system.collections.generic命名空間下的泛型集合類(dictionary,list,linkedlist,queue,sorteddictionary,sortedset及stack),優點:

尖括號中標記的正式名稱就是型別引數,符號讀作 of t;因此ienumerable讀作ienumerable of t,或也可稱其為型別t的列舉。

集合初始化語法:

//初始化標準的陣列

int myarrayofints = ;

//初始化整型的泛型list<>

listmygenericlist = new list;

//使用數字資料初始化arraylist

arraylist mylist = new arraylist ;

常用的泛型集合類:

32、泛型中的default,表示乙個型別引數的預設值,使用如下:x = default(t);用於設定型別引數的預設值,型別引數的預設值如下:

33、泛型型別引數的約束where關鍵字,除非要建立型別安全的自定義集合,否則很少會用到where關鍵字。

網劇《初戀了那麼多年》甜蜜開機 萬鵬王以綸邂逅初戀

5www.cppcns.com 月 27 日,由優酷 耐飛影視聯合出品的校園青春純愛劇 初戀了那麼多年 在青島正式開機。出品人慄坤 製片人王小蝦 導演丁培,攜主演王以綸 萬鵬 吳漢坤 鄭舒環 盧洋洋 魏天宇 靜芳 林子晴 王建楨等演員現身開機現場,超青春與高顏值的搭配,讓現場粉紅滿滿,戀愛氣息撲面而...

那麼多程式語言,為什麼要選擇C ?

c 程式設計主要用在客戶端的框架開發以及伺服器端開發,有些想從事程式設計的人,在寫 之前就給自己設立了遠大的目標就是要從事某個方向,有清晰目標的情況下選擇程式語言就會變得順理成章了,比如從事嵌入式開發c 語言的學習的必備的。很多人覺得c 這種程式語言語法比較糟糕,其實就是語法繁瑣一點相比別的程式語言...

說那麼多也沒一點用

不過他也因此受到了懲罰,仙界那些老傢伙頓時就不樂意了,其中乙個老古董就此出手,硬生生地將他頂上三花削去了一花,嘿嘿,這就是自作孽,不可活。痛快,真他瑪痛快!一番精彩的描述,傾盡了敖潛的萬千情緒,他似乎也因此輕鬆了不少,往事如雲,可把他壓抑得夠嗆,此時能夠發洩一番,交流一下,對敖潛來說真可謂舒爽至極。...