c 之高階特性

2021-10-04 23:33:08 字數 1829 閱讀 3708

一.c#委託

概念:委託是一種引用型別,表示對方法的引用,

這個方法是具有特定返回值型別和引數的方法。

方式一:通過委託例項呼叫方法

方式二:使用委託把方法作為引數傳遞給其它方法。

委託(方式一)的使用步驟:

1.宣告委託

語法:delegate 返回值型別 委託名(引數列表)

delegate string operation(string name);

2.例項化委託

委託名 委託變數名=new 委託名(方法名稱)

c#1.0: 委託名 委託變數名=new 委託名(方法)

operation operation1 =

newoperation

(chinesesayhello)

;

c#2.0: 委託名 委託變數名=方法

operation operation1 = chinesesayhello;
c#3.0: 委託名 委託變數名 = 拉蒙達表示式

operation operation1 = x=

>

3.呼叫委託

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 構造乙個...