一、基礎(chǔ)
站在用戶的角度思考問題,與客戶深入溝通,找到和順網(wǎng)站設(shè)計(jì)與和順網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋和順地區(qū)。1.規(guī)范:
除常量外,所有變量用駝峰命名方式,其它用帕斯卡命名方式.
2.編譯:
首先由csc.exe將cs文件編譯成MSIL.當(dāng)雙擊exe的時(shí)候,會(huì)由clr的jit(just in time)編譯器再次編譯成cpu指令.
csc位置(如):C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
csc命令(如):csc /t:library acme.cs(編譯成類庫(kù)) csc /r:acme.dll test.cs(引用acme.dll后編譯)
ngen位置(如):C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe(可實(shí)現(xiàn)jit效果)
ngen命令(如):ngen install D:\SystemTool\HelloWorld.exe (備注:exe方式)
3.面向?qū)ο?Object-Oriented 面向?qū)ο缶幊?Object-Oriented-Programming):
類是抽象的,對(duì)象是具體的.
析構(gòu)函數(shù):~ClassName(){}.實(shí)際是重寫基類的Finalize()方法
4.變量:
成員變量:默認(rèn)有一個(gè)初始值.string->null,int->0,bool->false
局部變量:使用前必須賦值.
5.封裝:
a.字段封裝成屬性 b.方法參數(shù)封裝成類 c.方法重用 d.封裝成類庫(kù)
6.繼承:
單根性,傳遞性
構(gòu)造函數(shù)不繼承.
7.多態(tài):
a.vitual和override方法可以給重寫
b.abstract方法
c.接口
8.訪問修飾符:
成員訪問修飾符:
private:當(dāng)前類內(nèi)
protected:當(dāng)前類內(nèi)和子類內(nèi)
internal:當(dāng)前程序集內(nèi)
protected internal:當(dāng)前程序集內(nèi)或當(dāng)前類內(nèi)和子類內(nèi)
public:所有都可以
命名空間下的訪問修飾符:
只允許使用public和internal,但是微軟內(nèi)部使用private.
9.靜態(tài):
靜態(tài)作為與多態(tài)區(qū)別的.stati修飾.
靜態(tài)類:不能被實(shí)例化,成員都為靜態(tài)成員,可以有const常量
靜態(tài)成員:靜態(tài)成員在賦初始值的時(shí)候,是在靜態(tài)構(gòu)造函數(shù)中賦值的.
靜態(tài)構(gòu)造函數(shù):在類第一次使用前只調(diào)用一次.不能有修飾符,不能重載.
10.值類型與引用類型 值傳遞與引用傳遞:
值類型:int double struct等隱式繼承ValueType.
引用類型:string 類 數(shù)組等隱式繼承Object.
值傳遞:默認(rèn)就是值傳遞.
引用傳遞:在方法參數(shù)中加上ref就是引用傳遞.
11.SOLID:
single:單一職責(zé)
open:開發(fā)封閉
lis:里氏替換
interface:接口分離
depend:依賴倒置
面向?qū)ο笤O(shè)計(jì)的SOLID原則
12.接口:
a.接口里只能定義方法.
b.接口的成員不能有修飾符.默認(rèn)為public
13.實(shí)現(xiàn)接口和顯示實(shí)現(xiàn)接口:
一個(gè)類同時(shí)實(shí)現(xiàn)接口和顯示實(shí)現(xiàn)接口。
顯示實(shí)現(xiàn)接口:當(dāng)被調(diào)用的是接口的時(shí)候,則調(diào)用顯示接口的方法
實(shí)現(xiàn)接口:默認(rèn)執(zhí)行實(shí)現(xiàn)接口的方法.
14.類型轉(zhuǎn)換:
隱式轉(zhuǎn)換:當(dāng)小范圍的類型轉(zhuǎn)大范圍的類型.
強(qiáng)制轉(zhuǎn)換:當(dāng)指定的大范圍的類型對(duì)象可以轉(zhuǎn)小范圍類型的時(shí)候用(類型名)或者as進(jìn)行轉(zhuǎn)換
convert:語(yǔ)義轉(zhuǎn)換
parse:將其他類型轉(zhuǎn)換成數(shù)字類型
15.單位:
1byte = 8bit
1kb = 1024byte
Int32 = int : 4byte
16.異常處理:
錯(cuò)誤類型:語(yǔ)法錯(cuò)誤/邏輯錯(cuò)誤/運(yùn)行錯(cuò)誤
throw; :在catch中執(zhí)行就是將異常繼續(xù)往上拋
在try-catch-finally中,注意return的問題.本質(zhì)都是編譯把return拿到最下面.通過反編譯工具可以看到return的值會(huì)單獨(dú)拿個(gè)變量接受
17.參數(shù)修飾符:
params:可變參數(shù)
out:傳出參數(shù)
ref:引用傳遞,本質(zhì)在傳參數(shù)的值的時(shí)候,傳遞的是該變量的內(nèi)存地址
18.字符串:
1.字符串不可變性:實(shí)際雙引號(hào)里的字符串 都是常量.普通聲明的常量,是聲明一個(gè)常量的變量接受一個(gè)常量.
2.字符串拘留池:正是因?yàn)樽址牟豢勺冃?所以提出了這個(gè)池的技術(shù),實(shí)際就是把字符串的內(nèi)容當(dāng)做鍵,字符串的地址當(dāng)做值.
3.StringBuilder:在字符串拼接時(shí),一定要使用該對(duì)象.否則將不斷創(chuàng)建string對(duì)象.并且非常建議給定初始值.
C# 字符串拘留池機(jī)制
19.垃圾回收 GC:
回收對(duì)象:托管資源內(nèi)存中的堆對(duì)象.
回收時(shí)間:不確定
垃圾回收分3代.當(dāng)?shù)谝淮臻g滿的時(shí)候,就回收第一代資源,并把沒有回收的對(duì)象移到第二代中.依次類推.非常不建議手動(dòng)垃圾回收.
20.集合:
集合和數(shù)組 表面上一個(gè)是不定長(zhǎng)度 一個(gè)固定長(zhǎng)度. 實(shí)際本質(zhì)集合的內(nèi)部維護(hù)著一個(gè)數(shù)組.當(dāng)增加一個(gè)元素的時(shí)候,會(huì)重新一個(gè)new一個(gè)數(shù)組
常見集合:
ArrayList List
Hashtable Dictionary
Stack Stack
Queue Queue
微軟建議使用泛型類的集合.本質(zhì)原因也是因?yàn)闇p少裝箱拆箱的次數(shù).
21.裝箱拆箱
裝箱拆箱發(fā)生在發(fā)生在父子類之間的.
裝箱:值類型轉(zhuǎn)成引用類型.常轉(zhuǎn)成Object,值類型實(shí)現(xiàn)的接口.
拆箱:引用類型轉(zhuǎn)成值類型.常在強(qiáng)制轉(zhuǎn)換成值類型中出現(xiàn)
22.Path File Directory FileInfo DirectoryInfo Stream StreamWriter StreamReader
路徑 文件 目錄 文件信息 目錄信息 流 寫入流 讀入流
以流的形式 會(huì)減輕設(shè)備的壓力.不會(huì)出現(xiàn)一下子全讀完才執(zhí)行后續(xù)操作.
23.編碼
ASCII GB2312 GBK UNICODE UTF-8
Encoding.GetEncodings()取計(jì)算機(jī)所有編碼
實(shí)際字符串存儲(chǔ)在計(jì)算機(jī)上都是數(shù)字,以byte[]的方式存儲(chǔ).
亂碼的原因就是存的編碼和讀的編碼不一致導(dǎo)致的
24.序列化
序列化步驟:創(chuàng)建序列化器,序列化或者反序列化.
xml序列化: XmlSerializer 類 (System.Xml.Serialization)
js序列化:JavaScriptSerializer 類 (System.Web.Script.Serialization)
二進(jìn)制序列化:BinaryFormatter類(System.Runtime.Serialization.Formatters.Binary)
序列化:將對(duì)象狀態(tài)保存到存儲(chǔ)設(shè)備.
25.委托/事件
委托本質(zhì)就是一個(gè)類型
事件是委托的對(duì)象,本質(zhì)是一個(gè)私有的委托對(duì)象和2個(gè)public的方法.所以事件只有類內(nèi)部能調(diào)用!
26.匿名
匿名方法:delegate(參數(shù)){方法體} 多用于委托對(duì)象賦值,本質(zhì)是編譯器起了一個(gè)名字.
Lambda:語(yǔ)句:(參數(shù))=>{方法體} 表達(dá)式(只有一個(gè)參數(shù),方法體只有一句話的時(shí)候)例如:x=>x+2;
匿名類型例:new {Code = ViewBag.Code};匿名類型的屬性是只讀的!本質(zhì)匿名類型的字段都是私有的readonly,封裝成只讀的屬性.
27.泛型
泛型支持:類 方法 委托 接口
泛型約束:where T: class struct new() 類名 接口名
28.擴(kuò)展方法
擴(kuò)展方法:靜態(tài)類 靜態(tài)方法 第一個(gè)參數(shù)類型就是要擴(kuò)展的類型
本質(zhì)是編譯器把擴(kuò)展的類型作為參數(shù)傳到靜態(tài)方法中.
29.程序集
.net生成的exe和dll都是程序集.
包括類型元數(shù)據(jù),程序集元數(shù)據(jù),資源文件,MSIL中間語(yǔ)言.
公共的Assembly在GAC中,所以編譯的時(shí)候,默認(rèn)導(dǎo)入的程序集不會(huì)輸出.
30.Type Assembly
描述類的類型.通過Type對(duì)象,可以實(shí)例化出這個(gè)Type所指的類型的對(duì)象.
Type:通過Typeof(類名),GetType(對(duì)象名)
Assembly:Assembly.LoadFrom(程序集名)返回一個(gè)Assembly對(duì)象.GetType(類的限定名)獲得指定的類的Type對(duì)象.
根據(jù)Type創(chuàng)建對(duì)象:Activator.CreateInstance(Type對(duì)象名)
31.XML
可擴(kuò)展標(biāo)記語(yǔ)言:區(qū)分大小寫,一個(gè)根節(jié)點(diǎn),屬性值雙引號(hào),CDATA區(qū),注釋和html一樣,文檔申明的編碼和實(shí)際編碼要一致.
32.深拷貝 淺拷貝
深拷貝是所有成員都在內(nèi)存中拷貝一份.通過序列化可以完成深拷貝.
淺拷貝:除了深拷貝,都是淺拷貝,MemberwiseClone()可以直接拷貝.
33.正則表達(dá)式
正則表達(dá)式是描述字符串特征的表達(dá)式
元字符(反斜杠):
. [] | () {n,m} * ? + \d \s \w \b ^ $
. : 單個(gè)任意字符除了換行符
[] : 取中括號(hào)內(nèi)任意一個(gè)字符
| : 或的優(yōu)先級(jí)非常低
{n,m} : 前面的字符出現(xiàn)n到m次
* : 0次或多次
? : 0次或1次
+ : 1次或多次
\d : 0-9
\s : 空白
\w : 0-9a-zA-Z_ 單個(gè)字符
\b : 單詞邊界
^ : head
$ : end
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。