C 一些實用的,容易被遺忘的特性,經驗和技巧

2022-04-01 08:57:08 字數 1983 閱讀 1282

突然想到,想要通過名字來獲得列舉的值,看了不少的資料,發現上面都只是解釋列舉的語法而已,對於它的實際應用,一點也不提及,難道只能用switch來判斷?不好吧,這樣也未免太土了點。後來發現了列舉還有這樣的用法,真的很使用,看**:

code

namespace

enumtest

class

program}}

再來看一下執行結果圖:

怎麼樣,是不是覺得很實用啊。

接下來要介紹的是委託(delegate),有對delegate不太了解的人可以看一下我以前寫的乙個隨筆什麼是委託(delegate)

。我們平時使用委託都是單個的指定委託的方法,但是如果我們需要通過引數動態的指定呢?難道也是用switch?這樣做太麻煩了,還有更好的方法,看**:

code

namespace

delegatetest

public

void

secondmethod()

}delegate

void

dele();

class

program}}

下面是執行的結果圖:

接下來是乙個c#經常被忽略的特性,匿名方法。雖然匿名方法很少用到,但是知道總比不知道的好。以delegate為例,我們平時都是賦予delegate具體的方法,但是有時候有乙個方法要委託,但是它要執行的功能實在是很簡單,而且可能也就只用一次而已,但是要給它寫乙個具體的方法實在是麻煩。而c#2.0為我們提供了匿名方法的特性,**如下:

code

namespace

anonymity

;d.invoke();}}

}

執行結果如下圖:

接下來是索引器(indexer)了,寫技術文章不像寫**,真的挺累的。要構思,要描述,要寫**,要除錯,更重要的是,要敲鍵盤。好了,抱怨到些為止。索引器(indexer)能讓我們像訪問陣列一樣訪問物件,至於它有什麼作用呢?只有用到了才知道,看**:

遺憾的是,它不支援foreach送代。要實現送代的功能,可以實現ienumerable介面。

接下來是。。。?還有接下來?是不是看得很累了,其實我也寫得很累了。接下來是雜湊表(hashtable),hashtable大家都知道很好用,大家可能會發現,它好像不能使用foreach來送代。其實它是可以送代的,只是稍微有點不同而已,看**:

code

namespace

hashtabletest}}

}

執行結果如下圖:

大家仔細看一下,它送代返回的型別是dictionaryentry而不是我們預料中的string。為什麼是這樣的呢?hashtable不同於其它的collection,它儲存的不僅是值(value),同時還儲存著鍵(key),它們在hashtable中是以dictionaryentry型別儲存著的。再回顧一下上面的索引器(indexer),我們就能推斷出,hashtable可能是乙個實現了索引器功能的類(不是別罵我,我也是猜的)。

好了,終於寫完了,希望對大家有所幫助。

C 一些實用的,容易被遺忘的特性,經驗和技巧

突然想到,想要通過名字來獲得列舉的值,看了不少的資料,發現上面都只是解釋列舉的語法而已,對於它的實際應用,一點也不提及,難道只能用switch來判斷?不好吧,這樣也未免太土了點。後來發現了列舉還有這樣的用法,真的很使用,看 pre code namespace enumtest class prog...

C 一些實用的,容易被遺忘的特性,經驗和技巧

突然想到,想要通過名字來獲得列舉的值,看了不少的資料,發現上面都只是解釋列舉的語法而已,對於它的實際應用,一點也不提及,難道只能用switch來判斷?不好吧,這樣也未免太土了點。後來發現了列舉還有這樣的用法,真的很使用,看 enumtest class program 再來看一下執行結果圖 怎麼樣,...

一些遺忘的標籤

在做頁面時,基本上都忘了這幾個標籤,基本上都沒用到,今天偶爾看到了,就總結下 q 引用比較短的話,例如 吃飯了沒啊 吃飯了沒啊 在ie6下面是沒有引號的,為了表現統一在重置樣式的時候加上q before,q after blockquote 引用比較長的話,兩邊有縮排,在ie和ff瀏覽器表現統一 a...