狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 語法糖總結25條

admin
2023年6月17日 8:41 本文熱度 823

C# 語法糖是 C# 編程語言中為了簡化代碼和提高代碼可讀性而引入的一系列語言特性。這些特性在編譯時會被轉換成更基本的代碼形式,但在編寫代碼時提供了更加簡潔和直觀的方式。以下是對 C# 中常見語法糖的一個總結:

1.表達式體屬性:使用 => 運算符定義屬性的 getter 或 setter。

public string FullName => FirstName + " " + LastName;

2.隱式類型局部變量(var 關鍵字):編譯器根據初始化表達式推斷變量的類型。

var number = 42// 推斷為 int 類型

3.Lambda 表達式:定義匿名函數的簡潔方式。

Func<intintintadd = (x, y) => x + y;

4.表達式體成員:用于方法和委托。

public int Square(int x) => x * x;

5.字符串插值:在字符串中嵌入變量或表達式的值。

string message = $"Hello, {name}!";

6.空合并運算符(??):當左側操作數為 null 時,返回右側操作數的值。

string result = value ?? "Default Value";

7.異步/等待(async/await):簡化異步編程模型。

public async Task<stringGetWebPageAsync(string url)

  {

      using (var client = new HttpClient())

      {

          return await client.GetStringAsync(url);

      }

  }

8.使用語句(using 聲明):自動釋放資源,如文件和網絡連接。

using (var file = new StreamReader("file.txt"))

  {

      // 讀取文件內容

  // file 對象在這里會被自動釋放

9.命名參數:在調用方法時,通過參數名指定參數值,提高代碼可讀性。

MyMethod(name: "Alice"age30);

10.默認參數值:在方法聲明中為參數指定默認值。

public void MyMethod(string name = "Default") { /* ... */ }

11.擴展方法:允許你為已存在的類型添加新的方法,而無需創建新的派生類。這使得你可以在不修改原始代碼的情況下擴展類的功能。

public static class StringExtensions

  {

      public static string ToUpperInvariant(this string s)

      {

          return s.ToUpper(CultureInfo.InvariantCulture);

      }

  }

12.名稱空間別名:允許你為名稱空間或類型定義別名,以簡化代碼中的引用。

using System.Collections.Generic;

using List = System.Collections.Generic.List<int>; // 定義別名

List numbers = new List(); // 使用別名

13.空條件運算符(?.):當左側的操作數不為 null 時,才訪問其成員或調用其方法。這可以避免 NullReferenceException。

string text = null;

int? length = text?.Length; // 如果 text  null,則 length  null;否則為 text 的長度

14.元組:從 C# 7.0 開始,可以使用 ValueTuple 來創建輕量級的、不可變的數據結構,用于表示具有多個值的單個對象。

var person = (Name: "Alice", Age: 30);

Console.WriteLine(person.Name); // 輸出 "Alice"

15.模式匹配:C# 7.0 及更高版本引入了模式匹配功能,包括 is 類型模式和 switch 表達式,使得在條件語句中檢查類型和執行相應操作變得更加簡潔。

object obj = "hello";

  if (obj is string s)

  {

      Console.WriteLine(s.ToUpper()); // 輸出 "HELLO"

  }

16.棄元(Discard):使用下劃線 _ 作為占位符來表示不關心的變量值,這在解構賦值或模式匹配中特別有用。

var (first, _) = GetTuple(); // 只關心第一個值,忽略第二個值

17.范圍(Range)操作符:C# 8.0 引入了范圍操作符 ..,它允許你指定一個序列的子范圍。

int[] numbers = { 012345 };

int[] subArray = numbers[1..4]; // { 1, 2, 3 }

18.頂級語句:C# 9.0 及更高版本允許在編譯單元的頂層直接編寫語句,而無需包含在方法或類中。這簡化了腳本和小型程序的編寫。

using System;

Console.WriteLine("Hello, World!"); // 直接在頂層編寫的語句

19.記錄(Record)類型:C# 9.0 引入了記錄類型,它提供了更簡潔的語法來定義不可變數據類型的值語義,并自動實現相等性、哈希碼和字符串表示形式。

public record Person(string Name, int Age);

20.可空類型:使用可空類型(如 int?)可以表示值類型的空值,避免了使用默認值來表示空值的問題。

int? age = null;

if (age.HasValue)

{

      // 處理非空值的情況

}

21.nameof 表達式:返回變量、類型或成員的名稱作為字符串,主要用于異常消息、日志記錄等。

string name = "Alice";

Console.WriteLine(nameof(name)); // 輸出 "name"

22.拋出表達式(Throw expressions):允許在表達式中使用 throw 語句,而不僅僅是在語句中。

return someCondition ? someValue : throw new InvalidOperationException();

23.使用聲明(Using declarations):從 C# 8.0 開始,可以在代碼塊內部直接聲明 using 變量,而無需在外部聲明和初始化。

using var file = new StreamReader("file.txt");

// 使用 file 進行操作...

// 在代碼塊結束時,file 會被自動釋放

24.LINQ(Language Integrated Query):允許你在 C# 中直接編寫查詢語句,而無需使用額外的查詢語言。

var query = from p in people

            where p.Age > 18

            select p.Name;

25.條件編譯指令:使用如 #if, #else, #endif 等預處理指令,可以根據不同的編譯條件包含或排除代碼塊。這對于跨平臺開發或調試非常有用。

#if DEBUG

    Console.WriteLine("Debug mode is enabled.");

#endif


該文章在 2024/4/1 17:03:26 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved