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

歡迎訪問 生活随笔!

生活随笔

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

C#

C#sharp 必须扩展的知识点

發布時間:2023/12/10 C# 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#sharp 必须扩展的知识点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1)async / await

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

有關async / await-pattern的信息,請訪問:https://msdn.microsoft.com/en-us/library/hh191443.aspx

2)對象/數組/集合初始化器

通過使用對象、數組和集合初始化器,可以輕松地創建類、數組和集合的實例:

//一些演示類 public class Employee {public string Name {get; set;}public DateTime StartDate {get; set;} }

//使用初始化器創建employee?
Employee emp = new Employee {Name=”John Smith”, StartDate=DateTime.Now()};?
上面的例子在單元測試中才真正有用,但在其他上下文中應該避免,因為類的實例應該使用構造函數創建。

有關初始化器的信息,請訪問:https://msdn.microsoft.com/en-us/library/bb384062.aspx

3)Lambdas,謂詞,delegates和閉包

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

關于Lambdas,謂詞,delegates和閉包的信息,請訪問:http://www.codeaddiction.net/articles/13/lambda-expressions-delegates-predicates-and-closures-in-c

4)??(空合并運算符)

?? – 運算符返回左側,只要它不為null;那樣的情況下返回?
//可能為null var someValue = service.GetValue(); var defaultValue = 23

//如果someValue為null,結果將為23 var result = someValue ?? defaultValue; ?? – 運算符可以鏈接:?
ing anybody = parm1 ?? localDefault ?? globalDefault;?
并且它可以用于將可空類型轉換為不可空:

var totalPurchased = PurchaseQuantities.Sum(kvp => kvp.Value ?? 0);?
有關?? – 運算符的信息,請訪問:https://msdn.microsoft.com/en-us/library/ms173224.aspx

5)$“{x}”(字符串插值) ——C#6

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

//舊方法 var someString = String.Format(“Some data: {0}, some more data:?
{1}”, someVariable, someOtherVariable);

//新方法 var someString = $”Some data: {someVariable}, some more data:?
{someOtherVariable}”;

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

6)?.(Null條件運算符) ——C#6

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

//Null if customer or customer.profile or customer.profile.age is null?
var currentAge = customer?.profile?.age; 沒有更多NullReferenceExceptions!

有關?.-運算符的信息,請訪問:https://msdn.microsoft.com/en-us/library/dn986595.aspx

7)nameof Expression ——C#6

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

public void PrintUserName(User currentUser) {?
//The refactoring tool might miss the textual reference to current user?
below if we’re renaming it?
if(currentUser == null)?
_logger.Error(“Argument currentUser is not provided”);

//... } 你應該這樣使用它…
  • 1

public void PrintUserName(User currentUser) {?
//The refactoring tool will not miss this…?
if(currentUser == null)?
_logger.Error($”Argument {nameof(currentUser)} is not provided”);

//... }
  • 1

有關nameof-expression的信息,請訪問:https://msdn.microsoft.com/en-us/library/dn986596.aspx

8)屬性初始化器 ——C#6

屬性初始化器允許你聲明屬性的初始值:

public class User {?
public Guid Id { get; } = Guid.NewGuid();?
// … }

使用屬性初始化器的一個好處是你不能聲明一個集合:嗯,因此使得屬性不可變。屬性初始化器與C#6主要構造函數語法一起工作。

9)as和is 運算符

is 運算符用于控制實例是否是特定類型,例如,如果你想看看是否可能轉換:

if (Person is Adult) {?
}

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

SomeType y = x as SomeType; if (y != null) {?
//do stuff?
}

10)yield 關鍵字

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

public static IEnumerable Power(int number, int exponent) {?
int result = 1;?
for (int i = 0; i < exponent; i++)?
{?
result = result * number;?
yield return result;?
} }

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

11.??? ? ?:? ? ?.? ? ? 參考另一篇博文

> 譯文鏈接:http://www.codeceo.com/article/10-features-csharp-need-learn.html > 英文原文:10 features in C# that you really should learn (and use!) > 翻譯作者:碼農網 – 小峰 [ 轉載必須在正文中標注并保留原文鏈接、譯文鏈接和譯者等信息。]

總結

以上是生活随笔為你收集整理的C#sharp 必须扩展的知识点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。