日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

书籍推荐:《More Effective C#》

發(fā)布時間:2023/12/4 C# 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 书籍推荐:《More Effective C#》 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

很多年前看過Bill Wagner的《Effective C#》第一版,涵蓋了C#2.0相關(guān)語言特性的最佳實踐,教我們怎樣更優(yōu)雅地去編寫C#代碼,當時覺得受益匪淺。最近拿到了《More Effective C#》第二版,目前看了大概三分之二,讓我對C#的的應(yīng)用有了更深入的了解,書雖沒看完,但還是要推薦一下。

《More Effective C#》第二版涵蓋到了C#7.0的特性,全書分為5個大的章節(jié),類型處理、API設(shè)計、異步編程、并行處理和動態(tài)編程,我覺得深入理解前三章便能讓您在工作中如虎添翼,學(xué)習(xí)和了解C#中的一些特性,并且能知道在什么場景下使用這些特性,真正做到了知其然也知其所以然。

只要涉及到編程,總會回歸到各種數(shù)據(jù)類型的操作,怎樣合理的使用數(shù)據(jù)類型,怎樣避免一些陷進,這些在第一章中都會涉及到,比如在判斷兩個對象相等有下面一些原則:

不只是給出了實踐的方法,更是說清楚了其中的原委。

一個有追求的程序員,一定不甘心每天只做CRUD,隨著經(jīng)驗的增長,您可能需要去編寫更下游的程序,需要提供安全、好用、可擴展的方法或接口供上游調(diào)用,即便您只是寫寫WebAPI,依然會被各種端去調(diào)用,第二章的API設(shè)計會讓您少走很多彎路。

比如我們平時在設(shè)計類時,碰到需要做拷貝的,就會很自然想到去實現(xiàn)ICloneable接口,書中告訴了我們?yōu)槭裁床灰崿F(xiàn)ICloneable接口,以及什么情況下可以去實現(xiàn)ICloneable接口。

還有,在調(diào)用.NET一些底層方法時,有時會出現(xiàn)很多的重載版本,那么在我們寫代碼時,會去借鑒,也會寫出有很多重載版本的方法。書中建議我們在初次設(shè)計方法時,可以利用可選參數(shù)和命名參數(shù)來設(shè)計方法的參數(shù),可以減少方法的重載版本,但發(fā)布后,如果有調(diào)整,建議添加重載版本。

第三章講述了怎樣使用異步編程,內(nèi)容雖然不是很多,但如果您已經(jīng)使用過異步編程,這些會讓您理解更加深刻。下面舉一個小例子。

在C#7中加入了本地方法的特性,可以讓我們在方法的內(nèi)部寫方法,代碼如下:

static?void?LocalMethod(){????string?name?=?"oec2003";????string?name1?=?"oec2004";????Console.WriteLine(AddPrefix(name));????Console.WriteLine(AddPrefix(name1));????string?AddPrefix(string?n)????{????????return?$"Hello?{n}";????}}
????string?name?=?"oec2003";
????string?name1?=?"oec2004";

????Console.WriteLine(AddPrefix(name));
????Console.WriteLine(AddPrefix(name1));

????string?AddPrefix(string?n)
????
{
????????return?$"Hello?{n}";
????}
}

可能您知道有這么一個特性,但并不知道該什么時候用,在不知道的情況下,為了去使用某個特性,可能出現(xiàn)濫用。書中給出了該特性的一個應(yīng)用場景。看下面一段示例代碼:

public?Task<string>?LoadMessage(string?userName){????if?(string.IsNullOrWhiteSpace(userName))????{????????throw?new?AggregateException(message:?"username?is?null");????}????return?LoadMessageImpl();????async?Task<string>?LoadMessageImpl()????{????????var?name?=?await?LoadMessageAsync();????????var?message?=?name????"No?Message";????????return?message;????}}Task<string>?LoadMessageAsync(){????var?task?=?Task.Run(()?=>????{????????Thread.Sleep(5000);????????return?"oec2003";????});????return?task;}
????if?(string.IsNullOrWhiteSpace(userName))
????{
????????throw?new?AggregateException(message:?"username?is?null");
????}
????return?LoadMessageImpl();

????async?Task<string>?LoadMessageImpl()
????
{
????????var?name?=?await?LoadMessageAsync();
????????var?message?=?name????"No?Message";
????????return?message;
????}
}
Task<string>?LoadMessageAsync()
{
????var?task?=?Task.Run(()?=>
????{
????????Thread.Sleep(5000);
????????return?"oec2003";
????});
????return?task;
}


本文是我閱讀到現(xiàn)在的一個最直觀的感受,書中的內(nèi)容我在理解、消化并進行實踐后會繼續(xù)分享出來。總之,好書是需要反復(fù)閱讀的,直到看到某一小節(jié)的名稱便能說出它的來龍去脈,才是真正的掌握。

總結(jié)

以上是生活随笔為你收集整理的书籍推荐:《More Effective C#》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。