新聞中心
一、基礎(chǔ)
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比長(zhǎng)樂(lè)網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式長(zhǎng)樂(lè)網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋長(zhǎng)樂(lè)地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。
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(編譯成類(lèi)庫(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):
類(lèi)是抽象的,對(duì)象是具體的.
析構(gòu)函數(shù):~ClassName(){}.實(shí)際是重寫(xiě)基類(lèi)的Finalize()方法
4.變量:
成員變量:默認(rèn)有一個(gè)初始值.string->null,int->0,bool->false
局部變量:使用前必須賦值.
5.封裝:
a.字段封裝成屬性 b.方法參數(shù)封裝成類(lèi) c.方法重用 d.封裝成類(lèi)庫(kù)
6.繼承:
單根性,傳遞性
構(gòu)造函數(shù)不繼承.
7.多態(tài):
a.vitual和override方法可以給重寫(xiě)
b.abstract方法
c.接口
8.訪問(wèn)修飾符:
成員訪問(wèn)修飾符:
private:當(dāng)前類(lèi)內(nèi)
protected:當(dāng)前類(lèi)內(nèi)和子類(lèi)內(nèi)
internal:當(dāng)前程序集內(nèi)
protected internal:當(dāng)前程序集內(nèi)或當(dāng)前類(lèi)內(nèi)和子類(lèi)內(nèi)
public:所有都可以
命名空間下的訪問(wèn)修飾符:
只允許使用public和internal,但是微軟內(nèi)部使用private.
9.靜態(tài):
靜態(tài)作為與多態(tài)區(qū)別的.stati修飾.
靜態(tài)類(lèi):不能被實(shí)例化,成員都為靜態(tài)成員,可以有const常量
靜態(tài)成員:靜態(tài)成員在賦初始值的時(shí)候,是在靜態(tài)構(gòu)造函數(shù)中賦值的.
靜態(tài)構(gòu)造函數(shù):在類(lèi)第一次使用前只調(diào)用一次.不能有修飾符,不能重載.
10.值類(lèi)型與引用類(lèi)型 值傳遞與引用傳遞:
值類(lèi)型:int double struct等隱式繼承ValueType.
引用類(lèi)型:string 類(lèi) 數(shù)組等隱式繼承Object.
值傳遞:默認(rèn)就是值傳遞.
引用傳遞:在方法參數(shù)中加上ref就是引用傳遞.
11.SOLID:
single:單一職責(zé)
open:開(kāi)發(fā)封閉
lis:里氏替換
interface:接口分離
depend:依賴倒置
面向?qū)ο笤O(shè)計(jì)的SOLID原則
12.接口:
a.接口里只能定義方法.
b.接口的成員不能有修飾符.默認(rèn)為public
13.實(shí)現(xiàn)接口和顯示實(shí)現(xiàn)接口:
一個(gè)類(lèi)同時(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.類(lèi)型轉(zhuǎn)換:
隱式轉(zhuǎn)換:當(dāng)小范圍的類(lèi)型轉(zhuǎn)大范圍的類(lèi)型.
強(qiáng)制轉(zhuǎn)換:當(dāng)指定的大范圍的類(lèi)型對(duì)象可以轉(zhuǎn)小范圍類(lèi)型的時(shí)候用(類(lèi)型名)或者as進(jìn)行轉(zhuǎn)換
convert:語(yǔ)義轉(zhuǎn)換
parse:將其他類(lèi)型轉(zhuǎn)換成數(shù)字類(lèi)型
15.單位:
1byte = 8bit
1kb = 1024byte
Int32 = int : 4byte
16.異常處理:
錯(cuò)誤類(lèi)型:語(yǔ)法錯(cuò)誤/邏輯錯(cuò)誤/運(yùn)行錯(cuò)誤
throw; :在catch中執(zhí)行就是將異常繼續(xù)往上拋
在try-catch-finally中,注意return的問(wèn)題.本質(zhì)都是編譯把return拿到最下面.通過(guò)反編譯工具可以看到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í)候,就回收第一代資源,并把沒(méi)有回收的對(duì)象移到第二代中.依次類(lèi)推.非常不建議手動(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ù)組
常見(jiàn)集合:
ArrayList List
Hashtable Dictionary
Stack Stack
Queue Queue
微軟建議使用泛型類(lèi)的集合.本質(zhì)原因也是因?yàn)闇p少裝箱拆箱的次數(shù).
21.裝箱拆箱
裝箱拆箱發(fā)生在發(fā)生在父子類(lèi)之間的.
裝箱:值類(lèi)型轉(zhuǎn)成引用類(lèi)型.常轉(zhuǎn)成Object,值類(lèi)型實(shí)現(xiàn)的接口.
拆箱:引用類(lèi)型轉(zhuǎn)成值類(lèi)型.常在強(qiáng)制轉(zhuǎn)換成值類(lèi)型中出現(xiàn)
22.Path File Directory FileInfo DirectoryInfo Stream StreamWriter StreamReader
路徑 文件 目錄 文件信息 目錄信息 流 寫(xiě)入流 讀入流
以流的形式 會(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 類(lèi) (System.Xml.Serialization)
js序列化:JavaScriptSerializer 類(lèi) (System.Web.Script.Serialization)
二進(jìn)制序列化:BinaryFormatter類(lèi)(System.Runtime.Serialization.Formatters.Binary)
序列化:將對(duì)象狀態(tài)保存到存儲(chǔ)設(shè)備.
25.委托/事件
委托本質(zhì)就是一個(gè)類(lèi)型
事件是委托的對(duì)象,本質(zhì)是一個(gè)私有的委托對(duì)象和2個(gè)public的方法.所以事件只有類(lèi)內(nèi)部能調(diào)用!
26.匿名
匿名方法:delegate(參數(shù)){方法體} 多用于委托對(duì)象賦值,本質(zhì)是編譯器起了一個(gè)名字.
Lambda:語(yǔ)句:(參數(shù))=>{方法體} 表達(dá)式(只有一個(gè)參數(shù),方法體只有一句話的時(shí)候)例如:x=>x+2;
匿名類(lèi)型例:new {Code = ViewBag.Code};匿名類(lèi)型的屬性是只讀的!本質(zhì)匿名類(lèi)型的字段都是私有的readonly,封裝成只讀的屬性.
27.泛型
泛型支持:類(lèi) 方法 委托 接口
泛型約束:where T: class struct new() 類(lèi)名 接口名
28.擴(kuò)展方法
擴(kuò)展方法:靜態(tài)類(lèi) 靜態(tài)方法 第一個(gè)參數(shù)類(lèi)型就是要擴(kuò)展的類(lèi)型
本質(zhì)是編譯器把擴(kuò)展的類(lèi)型作為參數(shù)傳到靜態(tài)方法中.
29.程序集
.net生成的exe和dll都是程序集.
包括類(lèi)型元數(shù)據(jù),程序集元數(shù)據(jù),資源文件,MSIL中間語(yǔ)言.
公共的Assembly在GAC中,所以編譯的時(shí)候,默認(rèn)導(dǎo)入的程序集不會(huì)輸出.
30.Type Assembly
描述類(lèi)的類(lèi)型.通過(guò)Type對(duì)象,可以實(shí)例化出這個(gè)Type所指的類(lèi)型的對(duì)象.
Type:通過(guò)Typeof(類(lèi)名),GetType(對(duì)象名)
Assembly:Assembly.LoadFrom(程序集名)返回一個(gè)Assembly對(duì)象.GetType(類(lèi)的限定名)獲得指定的類(lèi)的Type對(duì)象.
根據(jù)Type創(chuàng)建對(duì)象:Activator.CreateInstance(Type對(duì)象名)
31.XML
可擴(kuò)展標(biāo)記語(yǔ)言:區(qū)分大小寫(xiě),一個(gè)根節(jié)點(diǎn),屬性值雙引號(hào),CDATA區(qū),注釋和html一樣,文檔申明的編碼和實(shí)際編碼要一致.
32.深拷貝 淺拷貝
深拷貝是所有成員都在內(nèi)存中拷貝一份.通過(guò)序列化可以完成深拷貝.
淺拷貝:除了深拷貝,都是淺拷貝,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ǎng)頁(yè)題目:[C#]CSharp基本語(yǔ)法
當(dāng)前鏈接:http://www.ef60e0e.cn/article/pjcode.html