第十九講 其他類

2021-06-21 00:20:35 字數 3262 閱讀 3201

回顧:

1. 多型如何實現的?

過載和虛方法覆寫

2. 什麼情況用虛成員?

不確定的用途,留待子類擴充套件覆寫時

3. 什麼情況需要覆寫?

功能近似,不必要重新建立新方法時

4. 為什麼需要抽象類和抽象方法?

規劃乙個類,但當前無法或不必具體現實時

主要內容

1. object 類

所有的.net類都派生於system.object

2. 類包含

即包含型別,是在另乙個物件中做資料成員的物件型別

需要例項操作?

3. 類巢狀

是指乙個類完整的包含另乙個類

需要例項操作?

4. 匿名型別

var與new關鍵字一起使用時,可以建立匿名型別

匿名型別只是乙個繼承了object的,沒有名稱的類

該類的定義從初始化器中推斷,類似於隱式型別化的變數

需要例項操作?

5. 分部類

指同乙個類的**分布在多個檔案中

使用partial關鍵字

6. 擴充套件方法

擴充套件方法使您能夠向現有型別「新增」方法,而不需建立新的派生類,重新編譯或以其他方式修改原始型別

擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。

如果擴充套件方法與類中的某個方法同名,擴充套件方法就從來不會被呼叫。類中已有的例項方法優先。

注意,擴充套件類要寫在頂級類中,不能寫在巢狀類中,否則就成了事倍功半的事兒了。ok

下面貼我自已做的例項**:

三個類之一:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace con19

set

}/// /// 以物件為引數的建構函式

///

///

public other(users us)

/// /// 方法:獲取使用者資訊

///

///

public string getu()

/// /// 建構函式

///

///

///

///

///

public users getuser(string s1,string s2,int i)

}/// /// 使用者資訊類

///

public class users

set

}/// /// add屬性

///

public string add

set

}/// /// age屬性

///

public int age

set

}/// /// 空建構函式

///

public users()

/// /// 帶引數的建構函式

///

///

///

///

public users(string s1, string s2, int a)

/// /// 以物件為引數的建構函式

///

///

public users(users u2)

/// /// 獲取使用者資訊的方法

///

///

public string getinfo()}}

三個類之二:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace con19

set

}int age;

public int age

set }}

}

三個類之三:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace con19}}

前台的呼叫

**:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace con19

; users ue = new users(uuu.name, uuu.add, uuu.age);

console.writeline(ue.getinfo());

console.writeline("***************====應用在泛型中的匿名類的研究*************************====");

listfamily = new list,

new person ,

new person ,

new person ,

new person

};//這個地方不怎麼理解,希望有牛人解釋一下這個convertall方法

var converted = family.convertall(delegate(person person);}

);foreach (var person in converted)

is an adult? ",

person.name, person.isadult);

}console.writeline("********************==擴充套件方法*************************=");

//注意如何呼叫擴充套件方法,是通過被擴充套件類物件來呼叫的,而不是前面所寫的擴充套件類

string str = user.ux("李四", "南京", 33, "\n資訊很真實");

console.writeline(str);

console.readkey();}}

}

執行結果:

第十九章 事務

redis的事務是指將多個命令請求打包,一次性地,按順序執行的機制。通過multi exec watch等命令實現事務功能。19.1.1 事務的開始 multi命令的執行代表了乙個事務的開始,會將執行該命令的客戶端由非事務狀態切換成事務狀態 在客戶端狀態的flags屬性中開啟redis multi標...

第十九周作業

1 實現永久重定向,當使用者訪問 www.magedu.org 這個網域名稱時我想讓他跳轉到 www.magedu.com 的主頁面,請寫出配置過程 location 2 rewrite案例 判斷檔案是否存在,要求 當使用者訪問到公司 的時輸入了乙個錯誤的 url 可以將使用者重定向至 www.ma...

acm第十九次樹

一 樹及二叉樹1 樹的概念 樹的定義 一棵樹是由n n 0 個元素組成的有限集合,其中 每個元素稱為結點 node 有乙個特定的結點,稱為根結點或樹根 root 除根結點外,其餘結點能分成m m 0 個互不相交的有限集合t0,t1,t2,tm 1。其中的每個子集又都是一棵樹,這些集合稱為這棵樹的子樹...