[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