首頁  >  文章  >  後端開發  >  C# 中的靜態類別

C# 中的靜態類別

王林
王林原創
2024-09-03 15:32:301172瀏覽

靜態類別是我們無法實例化的類別。靜態類別的唯一也是最重要的目標是放棄繼承類別的藍圖。它是在 C# 中的“static”關鍵字的幫助下創建的。靜態類別僅包含靜態成員。我們無法為靜態類別建立物件。在本主題中,我們將學習 C# 中的靜態類別。

靜態成員

C# 中的靜態類別由兩種靜態型別組成,如下所示:

1.靜態資料成員

靜態資料成員是透過使用 static 關鍵字來聲明的,因為靜態類別始終包含靜態資料成員。也可以使用類別名稱直接存取它們。靜態資料成員的記憶體是單獨分配的,無論其與物件的關係如何。

文法:

static class NameOfClass
{
public static name_of_datamember;
}

範例:

public class Vehicle
{
public static int Wheels = 4;
public static int GasTank
{
get
{
return 23;
}
}
public static void move() { }
public static event EventType RunOutOfGas;
// Extra non-static fields as well as properties
}

它們在第一次存取靜態成員之前以及靜態建構函式(如果呼叫靜態建構函式)之前進行初始化。為了存取它,我們使用類別的名稱而不是變數名稱。

2.靜態方法

使用 static 關鍵字宣告靜態方法,因為靜態類別總是包含靜態方法。這些方法只能存取靜態資料成員,不能存取非靜態資料成員。

文法:

static class name_of_class
{
public static name_of_method()
{
// code
}
}

C# 中靜態類別的範例

以下是下面提到的範例

範例#1

代碼:

/*
* C# Program to Check whether the Entered Number is Even or Odd
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace check1
{
class EvenAndOdd
{
static void Main(string[] args)
{
int i;
if (4 % 2 == 0) // You can enter any number you wish to check for even / odd
{
Console.Write("Entered Number is an Even Number");
Console.Read();
}
else
{
Console.Write("Entered Number is an Odd Number");
Console.Read();
}
}
}
}

輸出:

C# 中的靜態類別

範例#2

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public static class ABC {
// declaration of static Method
static void details()
{
Console.Write("Static Method of the class ABC is");
}
}
// Inheritance of the class ABC which would give an error since static
// class cannot be inherited
class ABC2 : ABC
{
public static void Main(String[] args)
{
}
}

輸出:

C# 中的靜態類別

說明:在第一個範例中,透過使用 static 關鍵字有一個名為 Book 的靜態類別。 Book 類別由靜態資料成員 name、l 和 t 以及一個名為 specs() 的靜態方法組成。靜態類別的此方法是透過類別名稱Book來呼叫的。規格();。由於我們已經知道靜態類別不是由物件組成的,因此 Book 類別的資料成員是透過其類別名稱來存取的,即 Book.name、Book。 l 和 Book.t.

靜態建構子

與普通建構子(即非靜態建構子)相比,靜態建構子基本上用於靜態資料成員的初始化。

功能/規則:

  1. 他們不能擁有任何存取修飾符。
  2. 它們不能與參數一起定義。
  3. 他們無權存取非靜態資料成員。

靜態項的記憶體分配

你一定知道應用程式記憶體的基本組成部分是堆疊和堆疊。堆內的一個特殊區域稱為高頻堆,其中儲存靜態成員。非靜態類別的靜態成員也儲存在堆中,然後在該類別的所有實例之間共用。因此,一個實例所做的變更會反映在所有其他實例中。

您一定已經知道,靜態成員只能包含其他靜態成員,因為無論實例是否創建,靜態成員都會被呼叫。從今以後,他們將無法存取非靜態成員。

C# 中靜態類別的優點

  1. 如果您、我們任何成員作為非靜態成員,我們將收到錯誤訊息。
  2. 如果我們嘗試建立靜態類別的實例,則會再次產生編譯時錯誤,因為靜態成員可以與其類別名稱一起直接存取。
  3. 在類別定義中的class關鍵字之前使用static關鍵字來聲明靜態類別。
  4. 靜態類別成員可以透過類別名稱後面跟著成員名稱來存取。

結論

  • 我們無法使用 new 關鍵字實例化靜態類別
  • 靜態項目只能存取其他靜態項目。考慮靜態類別僅包含靜態成員,如變數、方法等。
  • 靜態方法僅包含靜態變量,且它們只能存取其餘靜態項。
  • 靜態項目能夠在多個使用者之間共享資源。
  • 我們不能將 static 與索引器、析構函數或類別以外的類型一起使用。
  • 此外,非靜態類別中的靜態建構子僅在該類別第一次實例化時運行一次。
  • 此外,每當第一次造訪任何靜態成員時,靜態類別中存在的靜態建構子只會執行一次。
  • 靜態成員被分配在記憶體的高頻堆區域。

以上是C# 中的靜態類別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn