C 中 10 個你真的應該學習(和使用!)的功能

2021-07-26 06:44:28 字數 2570 閱讀 2333

如果你開始探索c#或決定擴充套件你的知識,那麼你應該學習這些有用的語言功能,這樣做有助於簡化**,避免錯誤,節省大量的時間。

1)async / await

使用async / await-pattern允許在執行阻塞操作時解除ui /當前執行緒的阻塞。async / await-pattern的工作原理是讓**繼續執行,即使在某些東西阻塞了執行(如web請求)的情況下。

2)物件/陣列/集合初始化器

通過使用物件、陣列和集合初始化器,可以輕鬆地建立類、陣列和集合的例項:

//一些演示類

public

class employee

public datetime startdate

}

//使用初始化器建立employee

employee emp = new employee ;

上面的例子在單元測試中才真正有用,但在其他上下文中應該避免,因為類的例項應該使用建構函式建立。

3)lambdas,謂詞,delegates和閉包

在許多情況下(例如使用linq時),這些功能實際上是必需的,確保學習何時以及如何使用它們。

4)??(空合併運算子)

?? – 運算子返回左側,只要它不為null;那樣的情況下返回

//可能為null var somevalue = service.getvalue(); var defaultvalue = 23

5)$「」(字串插值) ——c#6

這是c#6的乙個新功能,可以讓你用高效和優雅的方式組裝字串:

//舊方法 var somestring = string.format(「some data: , some more data:

」, somevariable, someothervariable);

//新方法 var somestring = $」some data: , some more data:

」;

你可以把c#表示式放在花括號之間,這使得此字串插值非常強大。

6)?.(null條件運算子) ——c#6

null條件運算子的工作方式如下:

//null if customer or customer.profile or customer.profile.age is null

var currentage = customer?.profile?.age; 沒有更多nullreferenceexceptions!

7)nameof expression ——c#6

新出來的nameof-expression可能看起來不重要,但它真的有它的價值。當使用自動重構因子工具(如resharper)時,你有時需要通過名稱引用方法引數:

public void printusername(user currentuser) 你應該這樣使用它…public void printusername(user currentuser) is not provided」);

//... }
8)屬性初始化器 ——c#6

屬性初始化器允許你宣告屬性的初始值:

public class user = guid.newguid();

// … }

使用屬性初始化器的乙個好處是你不能宣告乙個集合:嗯,因此使得屬性不可變。屬性初始化器與c#6主要建構函式語法一起工作。

9)as和is 運算子

is 運算子用於控制例項是否是特定型別,例如,如果你想看看是否可能轉換:

if (person is adult)

使用as運算子嘗試將例項轉換為類。如果不能轉換,它將返回null:

sometype y = x as sometype; if (y != null)

10)yield 關鍵字yield 關鍵字允許提供帶有條目的ienumerable介面。 以下示例將返回每個2的冪,冪指數從2到8(例如,2,4,8,16,32,64,128,256):

public static ienumerable power(int number, int exponent) }

yield返回可以非常強大,如果它用於正確方式的話。 它使你能夠懶惰地生成一系列物件,即,系統不必列舉整個集合——它就會按需完成。

> 英文原文:10 features in c# that you really should learn (and use!)

你確實應該學習並使用的 10 個 C 特性

使用 async await 模式,可以在執行 塊操作的時候不會阻塞 ui 或者當前的執行緒。即使該操作被某些執行動作延遲了 比如乙個 web 請求 async await 模式也會繼續執行後續的 更多關於 async await 模式的內容,請見 通過使用物件 陣列 集合的初始值設定項,可以很容易...

你應該了解的大資料10個新趨勢

當今科技領域發生了巨大的變化,也為大資料改善各行各業的業務 促進經濟增長開啟了大門。資料能幫助組織機構更好地開展工作,大資料分析已經超越了熱門的it趨勢標籤,成為公司業務的一部分。以下是10個新的大資料趨勢。01 迅速發展的物聯網技術 得益於物聯網 iot 技術,我們逐漸可以用智慧型手機來控制家用電...

你應該了解的大資料10個新趨勢

當今科技領域發生了巨大的變化,也為大資料改善各行各業的業務 促進經濟增長開啟了大門。資料能幫助組織機構更好地開展工作,大資料分析已經超越了熱門的it趨勢標籤,成為公司業務的一部分。以下是10個新的大資料趨勢。01 迅速發展的物聯網技術 得益於物聯網 iot 技術,我們逐漸可以用智慧型手機來控制家用電...