C#基礎(chǔ)技能培訓(xùn)-C#圖解教程(第四版)

第二章

1.標(biāo)識(shí)符

標(biāo)識(shí)符是一種字符串,且區(qū)分大小寫(xiě)

特點(diǎn):

1.字母和下劃線可以用在任何位置(a-z、A-Z、_)?!鞠聞澗€可以開(kāi)頭】

2.數(shù)字不可以放在首位,可以放在其他任何位置。

3.@只允許放在標(biāo)識(shí)符的首位,雖然允許使用但是不推薦常用。

延伸:[@在C#中的用法:

1.忽略轉(zhuǎn)義字符

例如

string fileName = "D:\\文本文件\\text.txt";

使用@后

string fileName = @"D:\文本文件\text.txt";

2.讓字符串跨行

例如

string strSQL = "SELECT * FROM HumanResources.Employee AS e"

   + " INNER JOIN Person.Contact AS c"

   + " ON e.ContactID = c.ContactID"

   + " ORDER BY c.LastName";

使用@后

string strSQL = @"SELECT * FROM HumanResources.Employee AS e
    INNER JOIN Person.Contact AS c
    ON e.ContactID = c.ContactID
    ORDER BY c.LastName";

3.在標(biāo)識(shí)符中的用法

C#是不允許關(guān)鍵字作為標(biāo)識(shí)符(類(lèi)名、變量名、方法名、表空間名等)使用的,但如果加上@之后就可以了

例如

public static void @static(int @int)
 {
            if (@int > 0)
            {
                System.Console.WriteLine("Positive Integer");
            }
            else if (@int == 0)
            {
                System.Console.WriteLine("Zero");
            }
            else
            {
                System.Console.WriteLine("Negative Integer");
            }
}

2.關(guān)鍵字

關(guān)鍵字是對(duì)編譯器具有特殊意義的預(yù)定義保留標(biāo)識(shí)符。它們不能在程序中用作標(biāo)識(shí)符,除非它們有一個(gè) @ 前綴。例如,@if 是有效的標(biāo)識(shí)符,但 if 不是,因?yàn)?if 是關(guān)鍵字。

image

具體用法與釋義

https://www.cnblogs.com/LS520/p/7115435.html

https://msdn.microsoft.com/zh-cn/library/x53a06bb(VS.80).aspx

3.代碼的注釋

image

第三章:類(lèi)型、存儲(chǔ)和變量

1.預(yù)定義類(lèi)型

image
image

1.三種非簡(jiǎn)單類(lèi)型:

string:是一個(gè)Unicode字符數(shù)組

object:是所有其他類(lèi)型的基類(lèi)

dynamic:使用動(dòng)態(tài)語(yǔ)言編寫(xiě)的程序集時(shí)使用

2.簡(jiǎn)單類(lèi)型-11種數(shù)值類(lèi)型

3.簡(jiǎn)單類(lèi)型-非數(shù)值類(lèi)型:char bool

2.dynamic與var的區(qū)別

var 在編譯階段已經(jīng)確定類(lèi)型,在初始化時(shí)候,必須提供初始化的值,而dynamic則可以不提供,它是在運(yùn)行時(shí)才確定類(lèi)型

1.var聲明一個(gè)局部變量只是一種簡(jiǎn)化語(yǔ)法,它要求編譯器根據(jù)一個(gè)表達(dá)式推斷具體的數(shù)據(jù)類(lèi)型

2.var只能用于聲明方法內(nèi)部的局部變量,而dynamic可用于局部變量,字段,參數(shù)

3.表達(dá)式不能轉(zhuǎn)型為var,但能轉(zhuǎn)型為dynamic

4.必須顯式初始化用var聲明的變量,但無(wú)需初始化用dynamic聲明的變量

例:static void Main(string[] args)

    {

        //var 在編譯階段已經(jīng)確定類(lèi)型

        var number = 3;

        //dynamic在編譯期間不進(jìn)行任何的類(lèi)型檢查,而是將類(lèi)型檢查放到了運(yùn)行期

        dynamic dyn = 3;

        dyn = "hello world";

        //runtime eror

        //字符串沒(méi)有 "fn不存在的方法" 的方法,但在語(yǔ)法檢查時(shí)通過(guò),不會(huì)提示語(yǔ)法錯(cuò)誤

        var s = dyn.fn不存在的方法();

        Console.ReadKey();

    }

var實(shí)際上是編譯期拋給我們的“語(yǔ)法糖”,一旦被編譯,編譯期會(huì)自動(dòng)匹配var 變量的實(shí)際類(lèi)型,并用實(shí)際類(lèi)型來(lái)替換該變量的申明,這看上去就好像我們?cè)诰幋a的時(shí)候是用實(shí)際類(lèi)型進(jìn)行申明的。而dynamic被編譯后,實(shí)際是一個(gè) object類(lèi)型,只不過(guò)編譯器會(huì)對(duì)dynamic類(lèi)型進(jìn)行特殊處理,讓它在編譯期間不進(jìn)行任何的類(lèi)型檢查,而是將類(lèi)型檢查放到了運(yùn)行期。

3.C#中int和System.Int32理解總結(jié)

int是System.Int32的別名,但是存在爭(zhēng)議

4.什么是委托?

委托是尋址方法的.NET版本,使用委托可以將方法作為參數(shù)進(jìn)行傳遞。委托是一種特殊類(lèi)型的對(duì)象,其特殊之處在于委托中包含的只是一個(gè)或多個(gè)方法的地址,而不是數(shù)據(jù)。

委托雖然看起來(lái)像是一種類(lèi)型,但其實(shí)定義一個(gè)委托,是定義了一個(gè)新的類(lèi)。

下面這行代碼,定義了一個(gè)委托,使用ILDasm.exe查看其生成的IL代碼如圖所示:

//定義委托,它定義了可以代表的方法的類(lèi)型,但其本身卻是一個(gè)類(lèi)publicdelegateintmethodDelegate(stringstr);

image

由圖中紅色框線中可以看出,.NET將委托定義為一個(gè)密封類(lèi),派生自基類(lèi)System.MulticastDelegate,并繼承了基類(lèi)的三個(gè)方法。

2.委托與函數(shù)指針的區(qū)別?

1、安全性:C/C++的函數(shù)指針只是提取了函數(shù)的地址,并作為一個(gè)參數(shù)傳遞它,沒(méi)有類(lèi)型安全性,可以把任何函數(shù)傳遞給需要函數(shù)指針的地方;而.NET中的委托是類(lèi)型安全的。

2、與實(shí)例的關(guān)聯(lián)性:在面向?qū)ο缶幊讨?,幾乎沒(méi)有方法是孤立存在的,而是在調(diào)用方法前通常需要與類(lèi)實(shí)例相關(guān)聯(lián)。委托可以獲取到類(lèi)實(shí)例中的信息,從而實(shí)現(xiàn)與實(shí)例的關(guān)聯(lián)。

3、本質(zhì)上函數(shù)指針是一個(gè)指針變量,分配在棧中;委托類(lèi)型聲明的是一個(gè)類(lèi),實(shí)例化為一個(gè)對(duì)象,分配在堆中。

4、委托可以指向不同類(lèi)中具有相同類(lèi)型返回參數(shù)和簽名的函數(shù),函數(shù)指針則不可以。

5.** C#中的委托是什么?事件是不是一種委托?**

答:委托本質(zhì)上是一種“方法接口”,它相當(dāng)于C/C++中的函數(shù)指針,當(dāng)然它比函數(shù)指針安全,在C#中通常用于事件處理。

 事件不是委托,不過(guò)由于事件的性質(zhì)決定了處理它的程序邏輯能訪問(wèn)的參數(shù),因此,在C#中處理事件的邏輯都包裝為委托。

6.值類(lèi)型與引用類(lèi)型&堆和棧

https://www.cnblogs.com/zd1994/p/4424329.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容