Java的流行程度如此高,免不了有不少寫(xiě)C#的程序員要學(xué)習(xí)寫(xiě)Java,粵嵌Java培訓(xùn)在此細(xì)數(shù)下Java不能使用的C#功能。
C#和Java都源于C / C ++語(yǔ)言,兩者在面向?qū)ο蠓矫嬗泻芏喙餐帯3?/span>Java的JVM和C#的.NET CLR結(jié)構(gòu)有一些相似之外,兩者各自的開(kāi)發(fā)團(tuán)隊(duì)對(duì)語(yǔ)言優(yōu)化關(guān)注點(diǎn)也不相同。
語(yǔ)言集成查詢(LINQ)
LINQ是2007年為查詢數(shù)據(jù)來(lái)源引入C#中的。使用LINQ編寫(xiě)查詢時(shí)不需要考慮正在調(diào)用的特定數(shù)據(jù)庫(kù)的語(yǔ)法。LINQ提供一個(gè)組件將查詢轉(zhuǎn)換為基礎(chǔ)源可讀的格式。例如,當(dāng)從SQL數(shù)據(jù)庫(kù)查詢時(shí),LINQ to SQL把LINQ查詢轉(zhuǎn)換成T-SQL,這樣查詢起來(lái)會(huì)更容易。
結(jié)構(gòu)體(struct)
C#中的結(jié)構(gòu)體類似于類。實(shí)際上,一個(gè)結(jié)構(gòu)體可以被認(rèn)為是一個(gè)“輕量級(jí)類”,因?yàn)樗旧戆瑯?gòu)造函數(shù)、常量、方法等等。結(jié)構(gòu)體和類之間的區(qū)別是結(jié)構(gòu)是值類型,類是引用類型。
創(chuàng)建類時(shí)編寫(xiě)結(jié)構(gòu)體的好處是在構(gòu)造一個(gè)值類型時(shí)比在構(gòu)造引用類型時(shí)更容易確保值語(yǔ)義。正如微軟所述:“struct類型的變量直接包含結(jié)構(gòu)體的數(shù)據(jù),而類類型的變量包含對(duì)數(shù)據(jù)的引用。” 因此,使用結(jié)構(gòu)體的好處之一是從代碼的其他部分改變其值的方法是顯示傳遞來(lái)作為參考。
異步/等待
在代碼或其他地方調(diào)用異步,當(dāng)代碼達(dá)到等待時(shí)將繼續(xù)運(yùn)行。如果達(dá)到時(shí)異步代碼還沒(méi)有完成,就執(zhí)行返回調(diào)用方法。需要注意的是,為了不阻擋當(dāng)前線程,這種方法只能在單線程上執(zhí)行。這種方法有助于提高應(yīng)用程序的總體響應(yīng)能力,減少性能瓶頸。使用異步編程對(duì)應(yīng)用程序訪問(wèn)Web和所有與UI相關(guān)的活動(dòng)都非常重要。與以往的異步編程相比,async / await不僅保留了代碼的邏輯結(jié)構(gòu),而且編譯器會(huì)幫助執(zhí)行許多工作。
Lazy<T> 類
許多程序員使用C#或Java時(shí)都用到延遲初始化(或延遲實(shí)例化),延遲初始化一個(gè)比較常見(jiàn)的例子是,應(yīng)用程序啟動(dòng)時(shí)加載對(duì)象,但初只需要幾個(gè)對(duì)象。在這種情況下,我們希望在需要的時(shí)候指示不必要的對(duì)象來(lái)初始化,以提高應(yīng)用程序性能。
關(guān)鍵字
編程語(yǔ)言中的一些非常有用的功能,有時(shí)候并不是很顯眼,比方說(shuō)關(guān)鍵字。一些關(guān)鍵字在C#中存在,Java中卻沒(méi)有。1、as 2、Yield 3、var 4、 Checked
工具
Java和C#之間還有更多的區(qū)別,其中一些根植于Java和.NET框架中。這些區(qū)別導(dǎo)致了提供生產(chǎn)監(jiān)視和錯(cuò)誤跟蹤的OverOps等工具在兼容性方面存在差異。OverOps向開(kāi)發(fā)人員展示了整個(gè)調(diào)用堆棧中所有錯(cuò)誤的完整源代碼和變量狀態(tài),目前沒(méi)有與.NET框架類似的功能。
只要編程思想還在,編程語(yǔ)言其實(shí)是一通百通,粵嵌Java培訓(xùn)愿你早日熟練掌握使用Java語(yǔ)言。