C# 基礎知識系列文章索引

隨筆分類 - C#基礎知識梳理系列

 
摘要: 前言: 在博客園園友的大力支持下,本人的第一本書《Learninghard C#學習筆記》終於出版了。 這本書是本人學習C#的親身經歷,書籍內容都是本人學習過程當中認爲必須掌握的內容,徹底無廢話,適合初學者和想系統學習C#的初、中級開發人員。 而且,對於初學者和初、中級工程師另一個好處是:不少... 閱讀全文
posted @ 2015-03-16 10:01 Learning hard 閱讀(3946) | 評論 (179) 編輯
 
摘要: 1、引言今天在論壇中看到一位朋友提出這樣的一個問題,問題大體(問題的連接爲:http://social.msdn.microsoft.com/Forums/zh-CN/52e6c11f-ad28-4633-a434-fc4d09f4d23d)是這樣的: static void Main(string[] args) { object m1 =1 ; object m2 = 1; Console.WriteLine(m1==m2); Console.WriteLine(m1.Equals(m2... 閱讀全文
posted @ 2013-08-12 19:43 Learning hard 閱讀(3941) | 評論 (22) 編輯
 
摘要: 1、引言 在C#中,靜態和非靜態的特徵對於咱們來講是再熟悉不過了,可是不多看到有一篇文章去好好地總結靜態和非靜態它們之間的不一樣,爲了幫助你們更好地去理解靜態和非靜態特徵, 因此將在這篇文章中幫你們全面總結下它們之間的不一樣,包括靜態類,靜態成員和靜態構造函數。但願在你們鞏固基礎的時候能夠拿出來好好複習下的。下面廢話很少了,直接進入咱們今天的主題。2、爲何須要靜態特徵 在自定義類或看.NET Framework類庫中均可以發現,類中大部分都是具體實例特徵(也就是沒有static標識的),同時咱們也能看到一些具備靜態特徵的類或成員,例如咱們常用的Console類以及WriteLine方法就.. 閱讀全文
posted @ 2013-06-16 00:55 Learning hard 閱讀(2513) | 評論 (4) 編輯
 
摘要: 1、引言 對於一些初學者(包括工做幾年的人在內)來講,有時候對於方法之間的參數傳遞的問題感受比較困惑的,由於以前在面試的過程也常常遇到參數傳遞的基礎面試題,這樣的面試題主要考察的開發人員基礎是否紮實,對於C#中值類型和引用類型有沒有深刻的一個理解——這個說的理解並非簡單的對它們簡單一個定義描述,而在於它們在內存中分佈。因此本文章將帶領你們深刻剖析下C#中參數傳遞的問題,並分享我本身的一個理解,只有你深刻理解了才能在不運行程序的狀況就能夠分析出參數傳遞的結果的。2、按值傳遞對於C#中的參數傳遞,根據參數的類型能夠分爲四類:值類型參數的按值傳遞引用類型參數的按值傳遞值類型參數的按引用傳遞引用類. 閱讀全文
posted @ 2013-06-11 23:44 Learning hard 閱讀(4611) | 評論 (21) 編輯
 
摘要: 本專題概要:引言同步代碼存在的問題傳統的異步編程改善程序的響應C# 5.0 提供的async和await使異步編程更簡單async和await關鍵字剖析小結1、引言在以前的C#基礎知識系列文章中只介紹了從C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,對於C#又有了新特性的增長——就是C#5.0中async和await兩個關鍵字,這兩個關鍵字簡化了異步編程,之因此簡化了,仍是由於編譯器給咱們作了更多的工做,下面就具體看看編譯器到底在背後幫咱們作了哪些複雜的工做的。2、同步代碼存在的問題對於同步的代碼,你們確定都不陌生,由於咱們日常寫的代碼大部分都是同步的,然而同步代碼卻存在一 閱讀全文
posted @ 2013-05-15 16:04 Learning hard 閱讀(24605) | 評論 (93) 編輯
 
摘要: C#基礎知識系列終於告了一個段落了, 本系列中主要和你們介紹了C#1.0到C# 4.0中一些重要的特性,剛開始寫這個專題的初衷主要是我以爲掌握了C#這些基礎知識以後,對於其餘任何的一門語言都是差很少的,這樣能夠提升朋友們對其餘語言的掌握,以及可讓你們更加迅速地掌握.NET的新特性, 而且相信這個系列對於找工做的朋友也是頗有幫助的,由於不少公司面試都很看重基礎知識是否紮實,是否對C#有一個全面的認識和理解,因此不少公司面試都會問到一些C#基礎概念的問題,例如,常常面試會問:你是如何理解委託的,如何理解匿名函數等問題。然而這個系列中並無介紹COM互操做性的內容以及.Net 4.5中的一些新.. 閱讀全文
posted @ 2013-01-08 10:30 Learning hard 閱讀(12837) | 評論 (51) 編輯
 
摘要: 本專題概要:動態類型介紹爲何須要動態類型動態類型的使用動態類型背後的故事動態類型的約束實現動態行爲總結引言: 終於迎來了咱們C# 4中特性了,C# 4主要有兩方面的改善——Com 互操做性的改進和動態類型的引入,然而COM互操做性這裏就不詳細介紹的,對於.Net 互操做性我將會在另一個專題中詳細和你們分享下我所瞭解到的知識,本專題就和你們分享C# 4中的動態類型,對於動態類型,我剛聽到這個名詞的時候會有這些疑問的——動態類型究竟是什麼的呢? 知道動態類型大概是個什麼的時候,確定又會有這樣的疑問——C# 4中爲何要引入動態類型的?(確定引入以後能夠完成咱們以前不能作的事情了,確定是有好處. 閱讀全文
posted @ 2013-01-07 02:23 Learning hard 閱讀(8377) | 評論 (28) 編輯
 
摘要: 本專題概要:Linq是什麼使用Linq的好處在哪裏Linq的實際操做例子——使用Linq遍歷文件目錄小結引言: 終於到了C# 3中最重要特性的介紹了,能夠說以前全部介紹的特性都是爲了Linq而作準備的,然而要想深刻理解Linq並非這個專題能夠介紹完的,因此我打算這個專題將對Linq作一個簡單的介紹,對於Linq的深刻理解我將會後面單獨做爲一個系列要和你們分享下。1、Linq是什麼?Linq也就是Language Integrated Query的縮寫,即語言集成查詢,是微軟在.Net 3.5中提出的一項新技術, Linq主要包含4個組件——Linq to Objects、Linq to X. 閱讀全文
posted @ 2012-12-24 00:20 Learning hard 閱讀(5235) | 評論 (16) 編輯
 
摘要: 引言: C# 3中全部特性的提出都是更好地爲Linq服務的, 充分理解這些基礎特性後。對於更深層次地去理解Linq的架構方面會更加簡單,從而就能夠本身去實現一個簡單的ORM框架的,對於Linq的學習在下一個專題中將會簡單和你們介紹下,這個專題仍是先來介紹服務於Linq的基礎特性——擴展方法1、擴展方法的介紹 我通常理解一個知識點喜歡拆分去理解,因此對於擴展方法的理解能夠拆分爲——首先它確定是一個方法,然而方法又是對於一個類型而言的,因此擴展方法能夠理解爲現有的類型(現有類型能夠爲自定義的類型和.Net 類庫中的類型)擴展(添加)應該附加到該類型中的方法。 在沒有擴展方法以前,若是咱們想爲一.. 閱讀全文
posted @ 2012-12-17 14:30 Learning hard 閱讀(3324) | 評論 (12) 編輯
 
摘要: 想弄懂Lambda表達式,相信看了本博客以後將不會以爲Lambda表達式難理解了 閱讀全文
posted @ 2012-12-12 10:19 Learning hard 閱讀(7728) | 評論 (25) 編輯
 
摘要: 引言 通過前面專題的介紹,你們應該對C# 1和C# 2中的特性有了進一步的理解了吧,如今終於迎來咱們期待已久的C# 3中特性,C# 中Lambda表達式和Linq的提出至關於完全改變咱們以前的編碼風格了,剛開始接觸它們,一些初學者確定會以爲很難理解,可是我相信,只要多多研究下而且弄明白以後你確定會愛上C# 3中的全部特性的,由於我本身就是這麼過來的,在去年的這個時候,我看到Lambda表達式和Linq的時候以爲很難理解,並且以爲很奇怪的(由於以前都是用C# 3以前的特性去寫代碼的,雖然C# 3中的特性已經出來好久了,可是本身卻寫的不多,也沒有怎麼去研究,因此就以爲很奇怪,有一種感受就是——怎. 閱讀全文
posted @ 2012-12-11 01:20 Learning hard 閱讀(4232) | 評論 (11) 編輯
 
摘要: 引言: 在C# 1.0中咱們常用foreach來遍歷一個集合中的元素,然而一個類型要可以使用foreach關鍵字來對其進行遍歷必須實現IEnumerable或IEnumerable<T>接口,(之因此來必需要實現IEnumerable這個接口,是由於foreach是迭代語句,要使用foreach必需要有一個迭代器才行的,然而IEnumerable接口中就有IEnumerator GetEnumerator()方法是返回迭代器的,因此實現了IEnumerable接口,就必須實現GetEnumerator()這個方法來返回迭代器,有了迭代器就天然就可使用foreach語句了),然 閱讀全文
posted @ 2012-12-02 23:16 Learning hard 閱讀(6248) | 評論 (13) 編輯
 
摘要: 引言: 感受很久沒有更新博客了的,真是對不住你們了。在這個專題中將介紹匿名方法,匿名方法看名字也能明白,固然就是沒有名字的方法了(現實生活中也有不少這樣的匿名過程,如匿名投票,匿名舉報等等,相信微軟在命名方面確定是根據了生活中例子的),然而匿名方法的理解卻不是僅僅是這一句話(這句話指的是沒有名字的方法),它還有不少內容,下面就具體介紹下匿名方法有哪些內容1、匿名方法 以前一直認爲匿名方法是在C# 3.0中提出的,以前之因此這麼認爲主要是由於知道C# 3.0中提出了匿名類型,因此看到匿名方法就很理所固然的認爲也是在C# 3.0中提出來,然而通過系統的學習C#特性後才發現匿名方法在C# 2.0.. 閱讀全文
posted @ 2012-12-01 22:25 Learning hard 閱讀(4540) | 評論 (6) 編輯
 
摘要: 引言: C# 2.0 中還引入了可空類型,可空類型也是值類型,只是可空類型是包括null的值類型的,下面就介紹下C#2.0中對可空類型的支持具體有哪些內容(最近一直都在思考如何來分享這篇文章的,由於剛開始以爲可空類型使用過程當中比較簡單,以爲沒有講的必要,可是考慮到這個系列的完整性,決定仍是嘮叨下吧,但願對一些不熟悉的人有幫助)。1、爲何會有可空類型 若是朋友們看了我以前的分享,對於這一部分都不會陌生,由於我通常介紹C#特性常常會以這樣的方式開頭的, 由於每一個特性都是有它出現的緣由的(有一句佛語這是這麼講的:萬事皆有因,有因必有果),首先來講說這個因的(果固然是新增長了可空類型這個新特性了.. 閱讀全文
posted @ 2012-11-23 00:42 Learning hard 閱讀(4462) | 評論 (24) 編輯
 
摘要: 引言: 在C# 2.0中泛型並不支持可變性的(可變性指的就是協變性和逆變性),咱們知道在面向對象的繼承中就具備可變性,當方法聲明返回類型爲Stream,咱們能夠在實現中返回一個FileStream的類型,此時就存在一個隱式的轉化——從FileStream類型(子類引用)——>Stream類型(父類引用),而且引用類型的數組也存在這種從子類引用——>父類引用的轉化,例如string[] 能夠轉化爲object[](即這樣的代碼是能夠經過編譯的:string[] strs =new string[3]; object[] objs =strs;),此時咱們確定會想是否泛型中的泛型參數也 閱讀全文
posted @ 2012-11-12 09:16 Learning hard 閱讀(4647) | 評論 (12) 編輯
 
摘要: 引言: 本專題主要是承接上一個專題要繼續介紹泛型的其餘內容,這裏就很少說了,就直接進入本專題的內容的。1、類型推斷 在咱們寫泛型代碼的時候常常有大量的"<"和">"符號,這樣有時候代碼一多,也不免會讓開發者在閱讀代碼過程當中會以爲有點暈的,此時咱們以爲暈的時候確定就會這樣想:是否是可以省掉一些"<" 和">"符號的呢?你有這種需求了, 固然微軟這位好人確定也會幫你解決問題的,這樣就有了咱們這部分的內容——類型推斷,意味着編譯器會在調用一個泛型方法時自動判斷要使用的類型,(這裏要注意的是:類型推 閱讀全文
posted @ 2012-11-08 17:25 Learning hard 閱讀(3934) | 評論 (16) 編輯
 
摘要: 引言: 在上一個專題中介紹了C#2.0 中引入泛型的緣由以及有了泛型後所帶來的好處,然而上一專題至關因而介紹了泛型的一些基本知識的,對於泛型的性能爲何會比非泛型的性能高卻沒有給出理由,因此在這個專題就中將會介紹緣由和一些關於泛型的其餘知識。1、泛型類型和類型參數 泛型類型和其餘int,string同樣都是一種類型,泛型類型有兩種表現形式的:泛型類型(包括類、接口、委託和結構,可是沒有泛型枚舉的)和泛型方法。那什麼樣的類、接口、委託和方法才稱做泛型類型的呢 ?個人理解是類、接口、委託、結構或方法中有類型參數就是泛型類型,這樣就有類型參數的概念的。 類型參數 ——是一個真實類型的一個佔位符(.. 閱讀全文
posted @ 2012-11-08 01:29 Learning hard 閱讀(4187) | 評論 (9) 編輯
 
摘要: 引言:前面專題主要介紹了C#1中的2個核心特性——委託和事件,然而在C# 2.0中又引入一個很重要的特性,它就是泛型,你們在日常的操做中確定會常常碰到並使用它,若是你對於它的一些相關特性還不是很瞭解,那就讓咱們一塊兒進入本專題的學習的。1、泛型的是什麼 泛型的英文解釋爲generic,固然咱們查詢這個單詞時,更多的解釋是通用的意思,然而有些人會認爲明明是通用類型,怎麼成泛型了的,其實這二者並不衝突的,泛型原本表明的就是通用類型,只是微軟可能有一個比較官方的此來形容本身引入的特性而已,既然泛型是通用的, 那麼泛型類型就是通用類型的,即泛型就是一中模子。 在生活中,咱們常常會看到模子,像咱們日常生. 閱讀全文
posted @ 2012-11-03 21:54 Learning hard 閱讀(4039) | 評論 (17) 編輯
 
摘要: 引言:當咱們在點擊窗口中的Button控件VS會幫咱們自動生成一些代碼,咱們只須要在Click方法中寫一些本身的代碼就能夠實現觸發Click事件後咱們Click方法中代碼就會執行,然而我一直有一個疑問的——既然上一專題中說事件是一個多播委託,然而自動生成的代碼中只有事件的實例化,卻沒有看到事件的調用,那既然沒有事件調用的代碼,那封裝的Click爲何會執行呢?1、點擊按鈕時觸發Click事件背後發送的事情在引言中提出了個人提問的, 我相信有些朋友可能也會有這樣的疑問的,而後事件確定是調用了的, 只是否是咱們代碼中調用,而是Butoon控件的內部代碼裏面調用了事件,而致使委託封裝的Click方法 閱讀全文
posted @ 2012-10-29 07:37 Learning hard 閱讀(6681) | 評論 (26) 編輯
 
摘要: 引言:前面幾個專題對委託進行了詳細的介紹的,而後咱們在編寫代碼過程當中常常會聽到「事件」這個概念的,尤爲是寫UI的時候,當咱們點擊一個按鈕後VS就會自動幫咱們生成一些後臺的代碼,而後咱們就只須要在Click方法裏面寫代碼就能夠,因此可能有些剛接觸C#的朋友就以爲這樣很理所固然的,也沒有去思考這是爲何的,爲何點擊下事件就會觸發咱們在Click方法裏面寫的代碼呢?事件到底扮演個什麼樣的角色呢?爲了解除你們的這些疑惑,下面就詳細介紹了事件,讓一些初學者深刻理解C#中的事件的概念。1、爲何C#中會有事件的? 前面專題中介紹了我理解的爲何須要委託的,因此這裏我來分享下我理解的爲何C#中要引入事. 閱讀全文
posted @ 2012-10-27 19:08 Learning hard 閱讀(4241) | 評論 (8) 編輯
 
摘要: 引言:上一專題介紹了下編譯器是如何來翻譯委託的,從中間語言的角度去看委託,但願能夠幫助你們進一步的理解委託,然而以前的介紹都是委託只是封裝一個方法,那委託能不能封裝多個方法呢?由於生活中常常會聽到,我表明你們的意見等這樣的說話,既然委託也是一個表明,那他若是隻能表明一我的,那他的魅力就不是很大了吧,因此咱們就會委託能不能表明多個方法的? 答案是能夠的,這就是本專題要講的內容——委託鏈,委託鏈也是一個委託,只是由於它是把多個委託鏈在一塊兒,因此咱們就以委託鏈來這麼稱呼它的。1、到底什麼是委託鏈咱們日常實例化委託對象時都是綁定一個方法的, 前一個專題介紹的委託也是包裝了一個方法的, 用前面的例子就是 閱讀全文
posted @ 2012-10-27 10:41 Learning hard 閱讀(4240) | 評論 (23) 編輯
 
摘要: 引言:上一個專題已經和你們分享了我理解的——C#中爲何須要委託,專題中簡單介紹了下委託是什麼以及委託簡單的應用的,在這個專題中將對委託作進一步的介紹的,本專題主要對委本質和委託鏈進行討論。1、委託的本質 平時咱們很容易使用委託——用C# delegate關鍵字定義委託,再用new操做符構造委託實例,而後經過調用委託實例來調用回調方法(就是用一個了委託對象的變量來代替方法名,這句話若是剛接觸的人很差理解的話,這裏給個例子:MyDelegatemydelegate =new Mydelegate(obj.mymethod),MyDelegate 是定義的一個委託,假設定義的是沒有參數的,而後調. 閱讀全文
posted @ 2012-10-25 00:46 Learning hard 閱讀(6986) | 評論 (34) 編輯
 
摘要: 引言:對於一些剛接觸C# 不久的朋友可能會對C#中一些基本特性理解的不是很深,然而這些知識也是面試時面試官常常會問到的問題,因此我以爲有必要和一些接觸C#不久的朋友分享下關於C#基礎知識的文章,因此有了這個系列,但願經過這個系列讓朋友對C#的基礎知識理解可以更進一步。然而委託又是C#基礎知識中比較重... 閱讀全文
相關文章
相關標籤/搜索