ch1 .NET Core入門
-
.NET介紹
這一章主要說的是.Net Core、.Net Framework、.Net Stanard三個之間的關係。通俗來講就是Core是新出的、能跨平臺,Framwork是老版的、不能跨平臺,Standard是為了在Framework、Core、Xamarin中統一庫的使用而定製的規範,以便於開發出來的庫可以在多個平臺公用,是一個規範。在新的.NET 5以後,微軟將幾個平臺合併了,就沒有Standard這一說了。 -
專案應該用.NET Core開發嗎?
微軟已經宣佈不再對.NET Freamwork增加新特性,以後只會修復缺陷。如果想體驗.NET的新特性,並且使用跨平臺、獨立部署、模組化等特性,去考慮.NET Core。對於當前已有的Framework專案,如果運轉良好,不需要升級和增加新功能,沒必要用.NET Core重寫。在我看來,Framework上面的特性基本已經夠用,新版的很多特性都有點華而不實的感覺。
ch2 .NET Core新特性
- 頂級語句
支援非同步, 感覺有點雞肋,我一般是不會用的 - 全域性using指令
應用非常多的第三方庫時用到,簡化重複using書寫,建立一個Using.cs檔案
global using System;
global using System.Collections.Generic;
global using System.Linq;
global using System.Text;
global using System.Threading.Tasks;
- using宣告
using釋放資源時用到,但是感覺不如用括號版本的直接,需要猜 - 可為空的引用型別
搞出一些? !語法,感覺就是蛋疼,我還是選擇在專案檔案中增加<Nullable>disable</Nullable>
關閉這個特性 - 記錄型別
public record Preson(string FirstName,string LastName);
重寫了ToString()和Equals()方法,算是C#的一個新的語法糖 - 非同步程式設計
在4.5就有了,用async、await大大簡化了非同步程式設計,內部使用狀態機實現不同執行緒的等待切換,值得一學 - LINQ
這裡主要是對查詢語法來進行說明,書中作者說在“編寫複雜的查詢條件時,用方法語法編寫的程式碼會更清晰”這句話不太贊同,應該是兩種語法都有其適合的場景,可以看下面兩個例子:在兩個List中查詢姓名相同的學生,組合為一個完整的學生。
public record StudentAge(string Name,int Age);
public record StudentWeight(string Name, int Weight);
public record Student(string Name,int Age,int Weight);
public class Test
{
public List<Student> QueryByFun(List<StudentAge> arr1, List<StudentWeight> arr2)
{
var items = arr1.SelectMany(item1 => arr2.Where(item2 => item1.Name == item2.Name)
.Select(item2 => new Student(item1.Name, item1.Age, item2.Weight)));
return items.ToList();
}
public List<Student> QueryByQuery(List<StudentAge> arr1, List<StudentWeight> arr2)
{
var items = from item1 in arr1
from item2 in arr2
where item1.Name == item2.Name
select new Student(item1.Name, item1.Age, item2.Weight);
return items.ToList();
}
}
可以看到,查詢語法看起來更簡潔直觀,這裡只是兩組資料,如果是三組、四組呢?查詢語法的優越性便出現了。