[C#][C#幼幼班] static 到底是什麼?

JoJo

--

當我們在生活中思考 C# 中的 static 概念時,可以將其比喻成一個共享的資源或工具,這個資源在整個應用程式中都是一樣的,而不是每次都需要創建一個新的實例。

static 的基本概念

在 C# 中,static 可以用於聲明靜態變量、靜態方法、靜態屬性和靜態構造函數。靜態成員是類別的一部分,與類別實例無關。這意味著靜態成員的數據不是存儲在類別實例中,而是在所有實例之間共享。

Static Variable

靜態變量用於存儲類別級別的數據。這些數據在類別的所有實例之間共享。

Static Method

靜態方法可以在不創建類別實例的情況下直接通過類別名稱調用。它們通常用於實現不依賴於類別實例狀態的功能。

Static Property

靜態屬性提供了一種訪問靜態數據的方法。它們可以像靜態方法一樣,通過類別名稱直接訪問。

Static Struct

靜態構造函數用於初始化類別的靜態成員。它在類別的任何靜態成員被第一次訪問時自動調用。

實務上的使用情境

全域變數

當你需要在應用程序的不同部分共享數據時,可以使用靜態變量來實現全域變數。

public class ApplicationSettings
{
public static string ApplicationName = "My Application";
}

實用工具方法

靜態方法非常適合作為實用工具方法,因為它們不需要類別的實例就可以執行。

public static class StringUtils
{
public static bool IsNullOrEmpty(string value)
{
return string.IsNullOrEmpty(value);
}
}

單例模式

靜態成員常用於實現單例模式,確保一個類別只有一個實例。

public class Singleton
{
private static Singleton instance;
private Singleton() {}

public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
}

擴充方法

要寫擴充方法,一定要宣告為 static

public static class ListExtensions
{
public static int Sum(this List<int> list)
{
int sum = 0;
foreach (int item in list)
{
sum += item;
}
return sum;
}
}
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

// 使用擴充方法計算列表中數字的總和
int totalSum = numbers.Sum();

Console.WriteLine($"The sum of all numbers is: {totalSum}");
// 輸出: The sum of all numbers is: 15

結論

C# 中的 static 關鍵字提供了一種強大的機制,用於在不創建類別實例的情況下訪問成員。無論是用於共享數據、實現工具方法,還是設計模式,static 都是 C# 程式設計中不可或缺的一部分。正確地使用 static 可以使你的代碼更加清晰、高效。然而,需要注意的是,過度使用靜態成員可能會導致代碼難以測試和維護,因此在使用時應該謹慎考慮。

常用情境:

  • 全域變數
  • 實用工具方法
  • 單例模式
  • 擴充方法

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

JoJo
JoJo

Written by JoJo

2020 年跳進軟體的菜雞後端

No responses yet

Write a response