深入.NET平臺和C#編程 之化骨綿掌 假 如 你 的 人 生 有 理 想,那 麽 就 一 定 要 去 追,不 管 你 現 在 的 理 想 在 別 人 看 來是 多 麽 的 可 笑 , 你 也 不 用 在 乎& ...
深入.NET平臺和C#編程
之化骨綿掌
假 如 你 的 人 生 有 理 想,那 麽 就 一 定 要 去 追,不 管 你 現 在 的 理 想 在 別 人 看 來是 多 麽 的 可 笑 , 你 也 不 用 在 乎 , 人 生 蹉 跎 幾 十 年 , 如 果 年 輕 的 時 候 計 較 得 失 前 怕 狼 就 後 怕 虎 而 不 去 追 逐, 等 到 了 40, 50 歲 的 時 候 , 你 唯 一 能 做 的 就 是 感 嘆 歲 月 的 消 逝 和 無 情…
船舶停靠在港灣是很安全的,但這不是造船的目的
--北大青鳥五道口校區原玉明老師編寫
By:北大青鳥五道口原玉明老師
1.學習方法: 3
第一章 深入.NET框架 5
1.NET簡單解說 5
2.Microsoft .NET框架概述。 7
3. NET框架體繫結構 9
4.封裝體現 李明瑞 14
5..那些年我們學過的訪問修飾符?? 14
6.變數,類和方法的命名法 15
7.new:代表含義: 15
8.欄位和屬性區別? 15
9.自動屬性 15
10.vs2012下寫的項目如何在vs2010中打開 16
11.作業環節 16
第二章 深入C#數據類型 16
CLR via C# 16
1. 封裝 16
2. 關於數組的那些事兒 17
3. 值類型(在棧上存儲真實的值)和引用類型(堆和棧上都要分配空間) 17
4. 結構體 22
5.構造函數 23
6.裝箱和拆箱 24
7. 值傳遞和引用傳遞 25
8.經典練習 經理評分 26
第三章 使用集合組織相關數據(終極記憶體數據容器) 28
一、集合概念引入 30
二、 第一個集合ArrayList的使用 31
★1.引子: 31
★2.集合擴容原理截圖 32
三、集合中元素操作(添加,遍歷,刪除、常見錯誤) 34
1.常見屬性: 34
2.常用方法: 34
3. 常見錯誤:見PPT 34
4.現場編程 35
四、集合初始化器,對象初始化器 36
五、HashTable 36
★1.HashTable註意事項 37
★2.對HashTable遍歷三種方案: 37
六、泛型集合List<T>(理解difficult,寫起來easy) 40
七、泛型集合Dictionary<K,V> 40
八、 自定義泛型 40
九、.NET集合框架(集合擴展) 41
Queue(隊列): 42
Stack(棧): 42
第四章 深入類的方法 44
1.構造函數 44
2.方法重載(考試必考:2到3分) 45
3. 對象間的交互 45
第六章 繼承 51
一、課程回顧 51
二、預習問題 52
三、本章目標 52
四、課程內容 53
3.繼承: 53
第七章 深入理解多態 60
第一種:虛方法實現多態 63
第二種:抽象方法實現多態 65
第八章 網路電視精靈 // 獲取和設置當前目錄(該進程從中啟動的目錄)的完全限定目錄。 System.Environment.CurrentDirectory 69
01.什麼是設計模式 72
02.簡單工廠圖解 73
03.單例模式 75
04.為什麼學習XML? 77
05.什麼是XML? 77
06.xml書寫註意點 78
07.解析xml文件 78
08.問題記錄 78
09.TreeView控制項 78
10.網路電視精靈 79
第九章 文件操作 89
01.文件操作相關 92
02.File和Directory 93
03.FileInfo和 DirectoryInfo 93
04.序列化與反序列化 94
第十章 影院售票系統 96
1. 從Movie開始 97
2. Seat 座位類 100
3放映場次 100
寒假作業 (寒假開心快樂!):
01.預習S2 第二本數前4章,提交電子版預習筆記,附帶案例做完,並且書寫第五章體檢套餐管理項目
02.將KTV系統代碼形成BLog文章,並且附有解釋,註釋!
03.在所有講過的S1課程中,書寫一篇有技術含量的blog,可以是對象數組,可以是KTV項目的功能點對知識點的運用把控。
04.整理S1四本書所有的課堂案例,上機練習,以及課後題目源代碼(需要提交),並且形成電子文檔。
05.新年最大收穫心情文章!
過年的一點點心意,大家別嫌少啊!希望大家過一個不一樣的春節
1.學習方法:
01.找一本好書
初始階段不適合,可以放到第二個階段,看到知識點時,要進行驗證
02.查看幫助文檔和搜索引擎的使用
藉助網路上的Blog文章
03.不要急功近利
不要抱著速成的想法,否則必然走彎路
學習編程不是一蹴而就的事情
付出的成本高,才能有一個高薪的收入
04.不要浮躁
不要什麼都學,只學有用的
浮躁的程度和技術水平成反比的
走自己的路,讓別人去浮躁去吧!
每天問問自己,我是不是開始浮躁了,不能人云亦云.
05.學習語言基礎很重要
基礎不扎實,開發出的程式就很危險
將所學的用到開發中去
06.什麼時候去看別人的代碼?
揣摩編寫代碼人的思路,遠比自己寫軟體要難得多
初學者不要去看別人的代碼
在紙上把調用關係畫出來,抓主線.
07.如何提高?
有主動性。學習的欲望要強。上網找別人的問題,為自己來提高
08.培養發現問題、思考問題和解決問題的能力
出錯信息,異常信息
養成發現問題、思考問題和解決問題的能力
這種能力受益一輩子,且不隨時間變化
09編程的思想
多用心,多動手
程式運行的原理和機制
編程的目的,函數的調用,記憶體模型
10.先學脈絡,再學枝葉
你肉眼可見的網站 ,你都可以仿製出來,達到以假亂真的頁面效果
13個段落 作家
第一章 深入.NET框架
--有的時候,我們在開發中,除了需要返回消息本身,還需要發送消息的狀態,這個
--時候需要引入out參數。
第一章 深入.NET框架
2016年3月23日13:39:34
1.類和對象的關係?
解析:對象是類的實例,類是對象的抽象。
1.NET簡單解說
l 關於類庫的解說
精華:所謂類庫,就是微軟或者sun公司,定義好了一堆類,方便用戶對資料庫數據的操作,或者對磁碟文件的操作
新建類庫時,命名空間的名稱就是類庫的名稱
體現形式:XXX.dll(dynamic link library)或者XXX.exe
包含了一堆類:每個類中包含了一堆方法
l 面向對象提升
OOP(Object Oriented Programming)面向對象編程 (5k) 8k 12k
AOP:(Aspache Oriented Programming):面向切麵編程
OOD(Object Oriented Designer)面向對象設計(架構師) 3萬/month
OOA(Object Oriented Analysis)面向對象分析 (分析師) 10萬/month
DBA(Database Administrator,簡稱DBA) 無價的,你要多少,老闆必須給多少!
l 泛型集合對對象數組的一個升級(真正的開發中,用的都是泛型集合)
l xml解析
如何將硬碟上的xml文件形成記憶體中的泛型集合數據
l IO操作
序列化與反序列化(應用很廣泛)
l 大家對.NET的認識
解析:老一輩人也稱為DOTNET
.NET戰略:微軟的一個夢想:任何一個人,在任何一個地方,使用任何一款終端設備,都可以訪問微軟提供的服務,eg 雲
廣州:google,
Office,Google()
佛的角度來說:萬物取一個平衡。
Java .NET
聯通 移動
A B
.NET是微軟的一個龐大的計劃(戰略)
Office.NET
網警瀏覽器
IE
卡莉·菲奧麗娜 (她是個女的)
hp的前ceo
hp和康柏這兩個合併,
windows azure
.NET 平臺
C#,VB.NET,C++
需要自己寫一個程式開啟攝像頭
Java效率低
C#
C#底層調用的是java的jar包
C語言
C開發的。
System.out.printnln();
Console.WriteLine();
MVP
關於重裝的那些事兒
gril friend
boy friend
桌面
我的文檔
網上鄰居
印表機共用
組件的註冊
驗證碼:註冊和登陸用驗證碼作用?
解析:機器 模擬 10億次請求,
聽說這個名字沒人用1
聽說這個名字沒人用2
金蝶 KIS
速達3000
用友:
管家婆
ERP(企業資源規劃)
OA系統
進銷存
領料單
組裝單
Vs版本 .NET Framework版本
Vs2003 1.0/1.1
Vs2005 2.0
Vs2008 3.0/3.5
Vs2010 4.0
Vs2012 4.5
Vs2013 4.5
Vs2015 待測、
2.Microsoft .NET框架概述。
01,Microsoft .NET介紹
微軟的.NET歷史
2000年微軟公司向全球宣佈其革命性的軟體和服務平臺:Microsoft .NET
02,為什麼需要.NET框架
通過如下兩個問題說明為什麼需要.NET框架
001,C#程式可以在不同平臺(PDA、PC)的環境中運行嗎?
002, 使用C#程式可以調用VB.NET開發的程式嗎?
答案肯定是可以的,這也足以說明.NET框架的強大之處。
03,.NET框架概述
.NET框架
.NET戰略的基礎框架
.NET程式的運行環境
強大的類庫
.NET 框架==.NET Framework
解析:在A機器上開發了一款軟體,只要B機器上有框架就行了,不用再B機器上安裝開發環境VS。
.net core 1.0
04,.NET框架的魅力
001,面向對象編程
提高軟體可復用、可擴展、易維護性、靈活性
002,強大的動態web支持
003,web服務
例如:天氣預報服務iGoogle和支付寶網上購物商城
003,數字身份驗證的支持
004,支持構建.NET程式的炫彩外衣(特效製作)
3.NET框架體繫結構
01.NET框架體繫結構
ADO.NET概念?
解析:ADO.NET是微軟提供的一組類庫,可以幫助程式員和資料庫交互。他裡面有四大對象(DataReader,DataAdapter,Command,Connection).
直接提問
二年:世界上有兩種人:能看懂二進位的人和不能看懂二進位的人
02,公共語言運行時
\
CLR的兩個組成部分
CTS:稱為通用類型系統
定義了在IL中的數據類型
CLS:稱為公共語言規範
包括幾種面向對象的編程語言的通用功能。
03,.NET框架類庫
Scanner
Arrays
1.NET平臺下的語言
01.C# VB J# F# C++
2.
vs2013 4.5
vs2012對應框架的版本是4.5
vs2010 4.0
vs2008/sp1 3.0/3.5
vs2005 2.0
vs2003 1.1
3..NET FrameWork兩大組件是什麼?
解析:.NET 框架類庫(FCL:FrameWork Class Library)和公共語言運行時(CLR:common language Runtime)
4.CLR包含兩部分:
解析:公共語言規範CLS(Common Language Specific) 通用類型系統CTS(Common Type System)
5.c#語言要編程成可以被CPU解析執行的代碼需要兩次編譯:
第一次編譯:將C#語言通過c#編譯器編譯成MSIL中間代碼
第二次編譯:將MSIL代碼通過即時編譯器(JIT)編譯成CPU可以解析執行的代碼,或者成為(平臺專用代碼)
6.java程式要想被CPU解析執行也是需要兩次編譯
一次編譯:將尾碼名為java的文件通過java編譯器編譯成尾碼名為.class(位元組碼)文件
第二次編譯:將.class文件通過java虛擬機(jvm)編譯成CPU可以解析的代碼
7.CLR裡面至少三部分:
CTS
CLS
JIT
類庫:可以看成是一個承載了N個類的容器。
類庫:System.Data.SqlClient 和資料庫交互
System.Data: DataSet
System.WinForms; Winform應用必須類庫
System.Collections.Generic; 泛型集合
System.Net; 網路操作,下載等操作
System.IO; 文件的讀寫,文件夾的讀寫。遍歷等操作
System.Drawing; 繪製圖形,和驗證碼
類庫和命名空間?
解析:一個類庫一般對應一個命名空間,也可以對應多個。
可執行文件
dynamic link library
類庫
4.封裝體現 李明瑞
第一種:將私有欄位封裝成公有的屬性看成是封裝的體現
第二種:一個類可以封裝屬性和方法
public class Dog
{
private string name;
public string Name
{
get{return name;}
set{name=value;}
}
public void bark()
{
}
}
1.面向對象編程三大特性:封裝、繼承和多態
5..那些年我們學過的訪問修飾符??
public:任何位置,包括跨程式集。
internal:在當前程式集(項目)中都可以訪問
private:只能在當前類中訪問(當前類的花括弧中訪問。)
protected:只能在當前類和其子類中使用 (後續講解)
訪問修飾符:真正的含義?
類 欄位 方法
類的訪問修飾符:
//public(這個類在任何地方都可以使用) internal
欄位:private,public
方法:private ,public
6.變數,類和方法的命名法
駱駝命名法(camel):第一個單詞的首字母小寫,後續有含義的單詞首字母大寫。 變數
帕斯卡命名卡(pascal):每一個單詞的首字母都大寫。類名和方法名
7.new:代表含義:
Student stu=new Student();
01.創建對象
02.開闢空間
03.自動調用構造函數
8.欄位和屬性區別?
解析:01.屬性不能保存數據,真正保存數據的是欄位
02.屬性是可有可無的,欄位是必須的。
03.如果欄位只想讓類內部訪問,那麼設置成private,如果想找一個中間者,
在Main方法中訪問到Student類中的私有欄位,那麼屬性可以是一種選擇。
希望:推薦大家以後書寫類的時候,欄位和屬性成對出現。
.屬性無非就是有get和set兩個訪問器組成
get:取值
set:賦值
9.自動屬性
自動屬性應用場景:當我們不需要做邏輯判定的時候可以使用自動屬性
定義自動屬性在後臺會自動幫我們生成一個對應數據類型的私有欄位
10.vs2012下寫的項目如何在vs2010中打開
步驟一:找到sln文件,用記事本打開,將Format Version 12.00 改為11.00
步驟二:找到csprocj文件 ,用記事本打開,將<TargeFrameworkVersion>4.5</TargeFrameworkVersion>
改為4.0
步驟三:將App.Config文件中的如下節點中的內容換成4.0
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
11.作業環節
01.下午大家魔獸寫完
02.寫一個可以讀取所有資料庫路徑的工具(三節課)
03.第二章預習(不用進班)
必須多於3頁
04.下次提問第一章和第二章單詞
001..NET 框架兩大組件
CLR組件
002.常用命名空間
003.C#程式編譯原理圖
第二章 深入C#數據類型
1.講解第一章 魔獸爭霸項目
C#入門經典
C#圖解教程
--->c#本質論
--->梅超風:
CLR via C#
2.試著講解幾道筆試題
1.封裝
土豪:拆快遞。
窗邊的小豆豆
C#本質論:
. 封裝又稱信息隱藏,是指利用抽象數據類型(自定義類UserInfo)將數據和數據的操作結合在一起,使其構成一個不可分割的獨立實體,儘可能的隱藏內部的細節,只保留一些對外介面,使之於外部發生聯繫。
體現一:把方法和屬性封裝到類中,看成是一種封裝
體現二:將私有欄位封裝成 公有的屬性
封裝的優點
第一:code重用;
第二:不必關心具體的實現; (方法)
第三:面向對象三大特征之一;
第四,具有安全性!
小孩兒
老舍37《四世同堂》 妞子 活活的給餓死
黃磊
2.關於數組的那些事兒
如果我們定義一個數組,並且賦值了
int[] nums={1,2};
nums當中保存 的是堆中的地址:例如:0x001
nums[0]:訪問的是堆中的內容
3.值類型(在棧上存儲真實的值)和引用類型(堆和棧上都要分配空間)
值類型:
Short int long
Float
Double
Boolean
Char
Byte
S2222 我們就是很2,牛!!!!你能怎麼樣!!
C# 垃圾回收器回收器
Java 垃圾回收器回收器
二代
三代
四代
Student stu=new Student();
4.結構體
為什麼用結構體?因為當一個業務實體中,屬性個數比較少的時候,使用類可能引起記憶體浪費,這個時候出現一種新的數據結構,就是結構體
/*01.結構體不用new,就可以直接對其屬性賦值
*02.結構體中可以有欄位,屬性和方法
*03.結構體是值類型,類是引用類型
*04.在結構體中不能給欄位賦初值,但是類中可以.
*05.結構體中沒有預設構造函數,但類中有預設構造函數
網路地址:
*/
所有數據類型的父親都是Object
所有的值類型直接的父親是ValueType,爺爺是Object
5.構造函數
預設如果定義了一個類,系統會自動的生成一個和該類名稱相同,並且沒有返回值類型,甚至連Void都沒有的方法,該方法就稱為構造函數!
Student stu=new Student();
註意問題:值類型的直接父類都是ValueType,而ValueType又繼承自Object
特殊的值類型:枚舉和結構體
特殊的引用類型:數組和介面
6.裝箱和拆箱
由於裝箱和拆箱對系統性能損耗很大,所以在真實的開發中我們儘量避免裝箱和拆箱的操作。
C#編程指南(c#權威)
Object:是引用類型,並且是所有數據類型(值類型,引用類型)的父類
面試題:
int number=3; 值類型的直接父類:ValueType,ValueType的父親是Object
Console.WriteLine(number.ToString());
結論:沒有裝箱
下去自己查!Why ??
老師:什麼時候應該裝箱,什麼時候應該拆箱?
解析:由於裝箱和拆箱過程都要損耗系統的性能,所以在開發中應該儘量避免裝箱和拆箱。
7.值傳遞和引用傳遞
方法的參數是值類型和引用類型
註意:值傳遞和引用傳遞判定依據是有沒有ref關鍵字
結論:
01.如果方法的參數類型本身就是引用類型,那麼對參數值的修改會永久保存
例如:public void TP(SE se)
{
se.Count++;//真正的修改se對象的Count值
}
02.如果方法的參數類型本身是值類型,又沒有ref修飾,那麼對參數值的修改,不會永久保存()
03.如果方法的參數類型本身是值類型,但是有ref修飾,那麼對象參數值的修改,也會永久保存。
值類型傳遞 :不帶ref的參數傳遞 SE se
引用類型傳遞:帶ref的參數傳遞
Windows Live Writer
8.經典練習 經理評分
思路分析:
*先準備一個SE類
* 準備一個對象數組,長度為3
* 寫一個方法初始化集合的3項
* 如何將數組中的數據(肉眼看不到的數據)轉換成界面上的ListView中的數據(肉眼能見到的數據)
作業:
1.幫我寫一個SSMS工具
2016年8月25日作業
1.
2.Blog文章
剖記憶體
值類型引用類型
Heap(堆) 棧(Stack) 隊列
12K
3.面試題:
int number=3;
Console.WriteLine(number.ToString());
結論:沒有裝箱
下去自己查!
四類八種類型
StringBuilder和StringBuffer
作業環節:
1.看本次課12個知識點
2.數組題
3.最後SE Voter手動敲一遍
4.電腦編號 ,經理評分
5.課後所有的選擇和簡答題
6.第三章的預習作業
第三章 使用集合組織相關數據
第三章 使用集合組織相關數據(終極記憶體數據容器)
S2223聽寫
第一題:List<T>類型泛型
第一題 Dictionary<K,V>泛型
第三章題 集合初始化器
一、集合概念引入
集合:某些指定的對象(SE)集中在一起就是集合
如下是一個Hello Kitty的集合
數組:可以存儲相同數據類型的一堆數據的容器
二、第一個集合ArrayList的使用
無論是java還是C#,引用類型對象都會自動調用它的ToString()
ToString()方法體重寫的剛好就是 命名空間.類名
public string ToString()
{
return this.GetType().ToString();
}
★1.引子:
用ArrayList進行賦值的時候,需要使用Add()
但是對集合中元素的修正可以使用下標,eg.list[0]=1給新值
但是在集合中元素個數為0的情況下,不能用Add()方法之外的其他手段給集合中添加元素
,原因因為_size是集合的一個屬性, 真正存儲元素個數為0的時候。_Size也是0.
int[] nums = { 1, 2, 3, 3, 4, 5 };
我想在2和3之間插入一個元素100
數組的局限性:由於給數組中添加元素,刪除元素的時候,特別麻煩,所以我想找一個替代數組的工具,來幫我們實現數組所能實現的功能。集合應運而生
集合的優點:01.自動擴容 02.集合當中很多方法可以讓我們更加便捷的來操作集合中數據。(必須掌握)
擴展:集合本質的講解(面試可以聊,加分)
00.使用ArrayList首先需要引入命名空間,System.Collections
01集合動態擴容原理:如果集合中元素個數為0,並沒有開闢空間
02.預設如果集合中出現了第一個元素,那麼集合的大小4,如果放入第5個元素,那麼會擴容成8
03.如果在小括弧中首次定義的時候指定了集合的長度,那麼以後擴容的方式
變成初次指定數字大小的2倍;如果沒有指定長度,那麼遵循01的規範
04.集合內部也是通過兩個數組相互copy完成擴容的,但是微軟已經對其做了優化,我們不用關心效率問題
★2.集合擴容原理截圖
小結:
01.集合的概念
自動擴容:
Capcity和Count區別?
02.構造函數
概念:給類定義一個方法,方法名和類名相同,沒有返回值,連void都不能有。
03.非泛型集合在使用前,一定要先導入命名空間。
04.命名空間
解析:作用:能使用該命名空間下所有的內容(類,方法)
保證在不同的命名空間下可以出現同名類 。
weilengdeyu.Download()
Weiredeyxue.UPLoad()
2015年6月27日17:20:58
--刪除
鍵盤
三、集合中元素操作(添加,遍歷,刪除、常見錯誤)
1.常見屬性:
Capacity:集合占用空間
Count:集合存儲元素個數
2.常用方法:
添加:int Add(Object