日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Framework学习笔记(十)

發布時間:2023/12/10 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Framework学习笔记(十) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

17.委托

.NET框架使用委托delegate來提供回調函數機制。

class?Set
{
????
private?Object[]?items;
????
public?Set(int?numItems)
????
{
????????items?
=?new?Object[numItems];
????????
for?(int?i?=?0;?i?<?numItems;?i++)
????????
{
????????????items[i]?
=?i;
????????}

????}
????public?delegate?void?Feedback(Object?value,?int?item,?int?numItems);
??
//定義了一個共有委托類型Feedback,委托表示一個回調方法簽名,故Feedback委托表示一個接受3個參數,且返回值為void的回調方法
????public?void?ProcessItems(Feedback?feedback)
????
{
????????
for?(int?item?=?0;?item?<?items.Length;?item++)
????????
{
????????????
if?(feedback?!=?null)
????????????
{
????????????????feedback(items[item],item
+1,items.Length);
????????????}

????????}
???????????????//ProcessItems方法接受一個參數feedback,然后調用由feedback變量所指定的回調方法
????}

}

1.使用委托回調靜態方法

static?void?StaticCallbacks()
{
????Set?setofItems?
=?new?Set(5);
????setofItems.ProcessItems(
null);
????
//傳遞給feedback參數的值為null,不會調用任何回調方法

????setofItems.ProcessItems(
new?Set.Feedback(/**//*method*/));
????
//構造一個委托對象,封裝一個方法method,這使得該方法可以通過委托封裝進行間接回調

????Set.Feedback?fb?
=?null;
????fb?
+=?new?Set.Feedback(/**//*method1*/);
????fb?
+=?new?Set.Feedback(/**//*method2*/);
????setofItems.ProcessItems(fb);
????
//委托鏈,所有回調的方法都必須接受相同參數,返回值類型
}

? 2.使用委托回調實例方法

與調用靜態方法不同的是,回調實例方法需要構造一個對象

?? App?appobj=new?App();
setOfItems.ProcessItems(
new?Set.Feedback(appobj.FeedbackToFile));

?

18.異常

異常對象都包含一個描述字符串和一個堆棧蹤跡。微軟規定所有和CLS兼容的編程語言都必須能夠拋出并捕獲那些繼承自System.Exception的異常類型。

void? SomeMethod()? {
???????? try? {

???????? //需要異常恢復和資源清理的操作代碼;或可能會拋出異常的代碼????

???????? //單獨一個try塊是沒有任何意義的

}

???????? catch(異常篩選器exception filter)? {

???????? //異常恢復代碼 ,出現異常時需要執行的響應代碼

//異常篩選器本身是一個類型;代碼執行時是自上而下搜索catch塊的,應將更具體的異常放在上面,否則會產生個錯誤

}

finally {

//包含確保要執行的代碼,一般是資源清理代碼

//不管線程是否拋出異常,該代碼塊中的代碼都能確保被執行

//一個try塊并非必須要有一個finally塊相關聯,因為有時候try塊中的代碼并不需要任何清理工作;但一個try塊最多只能有一個相關聯的finally

}

}

異常不是錯誤,它是對程序接口隱含假設的一種違反。這里的程序接口是指屬性的數據類型,方法的參數,返回值等。通過拋出異常,一個方法可以通知它的調用程序它所做的假設被違反了。

如何正確使用異常?

a.?????? 避免過多的finally塊;C#提供了lockusing語句,是編譯器自動產生try塊和finally塊,其中finally塊就是清理代碼,它們編譯產生的結果是一樣的。

b.????? 避免直接用System.Exception異常篩選器捕獲所有異常,因為系統隨時可能拋出StackOverflowExceptionOutOfMemoryException

c.?????? 當異常無法修復時,回滾部分完成的操作

?

轉載于:https://www.cnblogs.com/yuxhust/archive/2009/03/15/1412490.html

總結

以上是生活随笔為你收集整理的.NET Framework学习笔记(十)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。