如果你開始探索c#或決定擴充套件你的知識,那麼你應該學習這些有用的語言功能,這樣做有助於簡化**,避免錯誤,節省大量的時間。
1)async / await
使用async / await-pattern允許在執行阻塞操作時解除ui /當前執行緒的阻塞。async / await-pattern的工作原理是讓**繼續執行,即使在某些東西阻塞了執行(如web請求)的情況下。
2)物件/陣列/集合初始化器
通過使用物件、陣列和集合初始化器,可以輕鬆地建立類、陣列和集合的例項:
//使用初始化器建立employee//一些演示類
public
class employee
public datetime startdate
}
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:你可以把c#表示式放在花括號之間,這使得此字串插值非常強大。」, somevariable, someothervariable);
//新方法 var somestring = $」some data: , some more data:
」;
6)?.(null條件運算子) ——c#6
null條件運算子的工作方式如下:
//null if customer or customer.profile or customer.profile.age is null7)nameof expression ——c#6var currentage = customer?.profile?.age; 沒有更多nullreferenceexceptions!
新出來的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 技術,我們逐漸可以用智慧型手機來控制家用電...