1.泛型
泛型將乙個或多個型別的指定推遲到客戶端**宣告並例項化該類或方法的時候
使用泛型可以最大限度地重用**,保護型別的安全以及調高效能
可以建立泛型介面、泛型類、泛型方法
使用方式如下所示:
如果例項化泛型型別的引數相同,那麼
jit編譯器會重複使用該型別
c#的泛型採用「基類,介面,構造器,值型別
/引用型別」的約束方式來實現對型別能數的「顯式約束」
委託是事件的基礎。
必須使用具有相容返回型別和輸入引數的方法或
lambda
表示式例項化委託
。通過將委託與命名方法或匿名方法關聯,可以例項化委託。
泛型委託支援在委託返回值和引數上應用引數型別,這些引數型別同樣可以附帶合法的約束。
如:delegate
bool
predicate(t value); class x static
bool
g(strings) static void main() }
2.lambda表示式
lambda
表示式是一種可用於建立委託或表示式目錄樹型別的匿名函式。 通過使用
lambda
表示式,可以寫入可作為引數傳遞或作為函式呼叫值返回的本地函式
。lambda
表示式對於編寫
linq
查詢表示式特別有用
。若要建立
lambda
表示式,需要在
lambda
運算子=>
左側指定輸入引數(如果有),然後在另一側輸入表示式或語句塊。 例如,
lambda
表示式x => x * x
指定名為
x的引數並返回
x的平方值。僅當
lambda
只有乙個輸入引數時,括號才是可選的;否則括號是必需的。括號內的兩個或更多輸入引數使用逗號加以分隔
func
tresult
>
委託:t為引數型別,tresult為返回值型別
lambda表示式樹:詳情參照
aspx
3.linq
linq
,語言整合查詢(
language integrated query
)是一組用於c#和
visual basic
語言的擴充套件。它允許編寫
c#或者
visual basic
**以查詢資料庫相同的方式操作記憶體資料
亦可對陣列、list等進行操作
例如:
var result = from a in db.table
where a.id == 1
order by a.id
select a;
var result1 = from a in array
where a>3
select a;
3.在完成程式設計作業解決問題時補充的知識
關於泛型的靜態成員問題:
其中使用型別引數的構造型別,比如list被稱為開放構造型別(open constructed type)
而不使用型別引數的構造型別,例如list被稱為封閉構造型別(closed constructed type)。
特別要強調的是不同型別引數的封閉構造型別之間是不共享靜態成員變數的。
list的元素新增問題
在新增元素之前,list並沒有對內容進行複製,它只是儲存了元素的位址。所以,若list新增乙個元素後,直接對元素進行修改並重新新增,就會把前面已經新增的元素都一起修改了,就會出現新增後元素個數仍然增加但元素卻都變一樣的狀況。解決方法很簡單,只要每次新增元素,都保證那元素師師new出來的,而不是沿用之前的即可。
阿爾法蛋618買買買攻略來了!話不多說,抄作業了!
神獸歸校,爸媽們輔導孩子作業的痛苦又來了。趁著 618 期間,入手乙個能幫助孩子提高學習效www.cppcns.com率 養成學習好習慣的神器,豈不美哉?這不,連續三年霸榜天貓京東雙平台智慧型機械人品類銷售額雙冠軍的它 阿爾法蛋來了 作為孩子人工智慧好助手的它,收穫了 500 萬家庭的肯定。618 ...
this super關鍵字以及他們各自的作用
this 代表當前物件的引用,誰來呼叫我,我就代表誰 super 代表當前物件父類的引用 this和super的使用區別 a 呼叫成員變數 this.成員變數 呼叫本類的成員變數,也可以呼叫父類的成員變數 super.成員變數 呼叫父類的成員變數 b 呼叫構造方法 this 呼叫本類的構造方法 su...
HTTP 協議的通用頭域via 的意義以及作用
via 值為 下面是一些demo wtp 1.1 gdsz ps gw010 wap05.gd.chinamobile.com nokia wap gateway 4.0 cd3 ecd13 c nwg4.0 cd3 ecd13 c 4.1.03 下面是解釋 列出從客戶端到 ocs 或者相反方向的響...