一.c#委託
概念:委託是一種引用型別,表示對方法的引用,
這個方法是具有特定返回值型別和引數的方法。
方式一:通過委託例項呼叫方法
方式二:使用委託把方法作為引數傳遞給其它方法。
委託(方式一)的使用步驟:
1.宣告委託
語法:delegate 返回值型別 委託名(引數列表)
delegate string operation(string name);
2.例項化委託
委託名 委託變數名=new 委託名(方法名稱)
c#1.0: 委託名 委託變數名=new 委託名(方法)
c#2.0: 委託名 委託變數名=方法operation operation1 =
newoperation
(chinesesayhello)
;
operation operation1 = chinesesayhello;
c#3.0: 委託名 委託變數名 = 拉蒙達表示式
3.呼叫委託operation operation1 = x=
>
;
a.無返回值
委託變數名.invoke(引數);
或:委託變數名(引數);
b.有返回值:
string 變數名 = operation1.invoke(引數);
string csh = operation1.invoke(「張三」);
或:string csh = operation1(「張三」);
注:多播委託—可通過「+」運算子將多個物件分配到乙個委託例項上。
二.隱式型別和匿名型別
a.隱式型別:是編譯器根據變數的初始值「推斷」出的變數的型別(區域性推斷型別)
特點: 1.必須賦初始值,而且不能賦空值
2.變數型別不能改變,否則就會報錯。
b.匿名型別:匿名型別提供了一種方便的方法,可用來將一組唯讀屬性封裝到單個物件中,而無需首先顯式定義乙個型別。
包括:1.匿名類:匿名類其實本質和普通定義的類一樣,
只不過是由系統的編譯器來完成命名
2.匿名方法:匿名方法是沒有名稱只有主體的方法,
它提供了一種傳遞**塊作為委託引數的技術。
三.擴充套件方法和yield
a擴充套件方法
概念:就是在不修改原型別的前提下,增加新方法。
1.擴充套件方法必須是靜態方法 (static)
2.使用「this 型別」指明要擴充套件的型別
定義:public static string 擴充套件方法名(this int …,引數)
呼叫:int a
a.擴充套件方法名(引數)
b.yield
可以將符合條件的記錄查詢出來,中文意思產出,返回乙個集合型別ienumberable。
四.lambda表示式
是乙個通過委託傳過來的匿名方法,可以結合linq來完成相關的工作。
使用lambda運算子「=>」,讀作「goes to" (轉到)
語法:形式引數=>方法體
規則:引數不用型別宣告,如果只有乙個形參則小括號可以省略
如果方法體只有一條語句,則大括號,return,分號都可以省略
Redis之高階特性
expire key seconds 設定key的過期時間 ttl key 檢視key的過期時間 persist key 刪除key的過期時間 過期策略 定時刪除 主動,集中處理 會將每個設定了過期時間的 key 放入到乙個獨立的字典中,以後會定時遍歷這個字典來刪除到期的 key。過期策略 定時刪除...
Python之高階特性(2)
一 列表生成式 1 生成abc與def的全排列 2 1 輸出列表裡的名字 並且第乙個字母大寫 2 當列表裡有名字是非法字元時候,輸出列表裡的名字 並且第乙個字母大寫 3 找出指定目錄下以.log結尾的檔案 import os模組 os.listdir 檔名 檢視目錄下面的所有檔案 二 生成器 為什麼...
python學習之高階特性
切片 對列表 元組 字串 字典取中間的一部分,在c中一般是通過for迴圈拷貝 memcpy strcat等操作。而python提供了更方便的切片操作符 m n 前閉後開,如果從0取m可以省略 如果只用 就是切整片 也可以從尾端切片 m 前後的閉區間。列表生成式 list range m,n 構造乙個...