靜態(tài)類是我們無法實例化的類。靜態(tài)類唯一且最重要的目標是交出繼承類的藍圖。它是在 C# 中的“static”關(guān)鍵字的幫助下創(chuàng)建的。靜態(tài)類僅包含靜態(tài)成員。我們無法為靜態(tài)類創(chuàng)建對象。在本主題中,我們將學(xué)習 C# 中的靜態(tài)類。
靜態(tài)成員
C# 中的靜態(tài)類由兩種靜態(tài)類型組成,如下所示:
1.靜態(tài)數(shù)據(jù)成員
靜態(tài)數(shù)據(jù)成員是通過使用 static 關(guān)鍵字來聲明的,因為靜態(tài)類始終包含靜態(tài)數(shù)據(jù)成員。也可以使用類名直接訪問它們。靜態(tài)數(shù)據(jù)成員的內(nèi)存是單獨分配的,無論其與對象的關(guān)系如何。
語法:
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 }
它們在第一次訪問靜態(tài)成員之前以及在調(diào)用靜態(tài)構(gòu)造函數(shù)之前初始化。為了訪問它,我們使用類的名稱而不是變量名稱。
2.靜態(tài)方法
使用 static 關(guān)鍵字聲明靜態(tài)方法,因為靜態(tài)類始終包含靜態(tài)方法。這些方法只能訪問靜態(tài)數(shù)據(jù)成員,不能訪問非靜態(tài)數(shù)據(jù)成員。
語法:
static class name_of_class { public static name_of_method() { // code } }
C# 中靜態(tài)類的示例
以下是下面提到的示例
示例#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(); } } } }
輸出:
示例#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) { } }
輸出:
說明:在第一個示例中,通過使用 static 關(guān)鍵字有一個名為 Book 的靜態(tài)類。 Book?類由靜態(tài)數(shù)據(jù)成員 name、l 和 t 以及一個名為 specs() 的靜態(tài)方法組成。靜態(tài)類的該方法是通過類名Book來調(diào)用的。規(guī)格();。由于我們已經(jīng)知道靜態(tài)類不是由對象組成的,因此 Book 類的數(shù)據(jù)成員是通過其類名來訪問的,即 Book.name、Book。 l 和 Book.t.
靜態(tài)構(gòu)造函數(shù)
與普通構(gòu)造函數(shù)(即非靜態(tài)構(gòu)造函數(shù))相比,靜態(tài)構(gòu)造函數(shù)基本上用于靜態(tài)數(shù)據(jù)成員的初始化。
功能/規(guī)則:
- 他們不能擁有任何訪問修飾符。
- 它們不能與參數(shù)一起定義。
- 他們無權(quán)訪問非靜態(tài)數(shù)據(jù)成員。
靜態(tài)項的內(nèi)存分配
你一定知道應(yīng)用程序內(nèi)存的基本組成部分是堆和棧。堆內(nèi)的一個特殊區(qū)域稱為高頻堆,其中存儲靜態(tài)成員。非靜態(tài)類的靜態(tài)成員也存儲在堆中,然后在該類的所有實例之間共享。因此,一個實例所做的更改會反映在所有其他實例中。
您一定已經(jīng)知道,靜態(tài)成員只能包含其他靜態(tài)成員,因為無論實例是否創(chuàng)建,靜態(tài)成員都會被調(diào)用。從今以后,他們將無法訪問非靜態(tài)成員。
C# 中靜態(tài)類的優(yōu)點
- 如果您、我們?nèi)魏纬蓡T作為非靜態(tài)成員,我們將收到錯誤。
- 如果我們嘗試創(chuàng)建靜態(tài)類的實例,則會再次生成編譯時錯誤,因為靜態(tài)成員可以與其類名一起直接訪問。
- 在類定義中的class關(guān)鍵字之前使用static關(guān)鍵字來聲明靜態(tài)類。
- 靜態(tài)類成員可以通過類名后跟成員名來訪問。
結(jié)論
- 我們無法使用 new 關(guān)鍵字實例化靜態(tài)類
- 靜態(tài)項目只能訪問其他靜態(tài)項目??紤]靜態(tài)類僅包含靜態(tài)成員,如變量、方法等。
- 靜態(tài)方法僅包含靜態(tài)變量,并且它們只能訪問其余靜態(tài)項。
- 靜態(tài)項目能夠在多個用戶之間共享資源。
- 我們不能將 static 與索引器、析構(gòu)函數(shù)或類以外的類型一起使用。
- 此外,非靜態(tài)類中的靜態(tài)構(gòu)造函數(shù)只會在該類第一次實例化時運行一次。
- 此外,每當?shù)谝淮卧L問任何靜態(tài)成員時,靜態(tài)類中存在的靜態(tài)構(gòu)造函數(shù)只會運行一次。
- 靜態(tài)成員被分配在內(nèi)存的高頻堆區(qū)域中。
以上是C# 中的靜態(tài)類的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

多線程和異步的區(qū)別在于,多線程同時執(zhí)行多個線程,而異步在不阻塞當前線程的情況下執(zhí)行操作。多線程用于計算密集型任務(wù),而異步用于用戶交互操作。多線程的優(yōu)勢是提高計算性能,異步的優(yōu)勢是不阻塞 UI 線程。選擇多線程還是異步取決于任務(wù)性質(zhì):計算密集型任務(wù)使用多線程,與外部資源交互且需要保持 UI 響應(yīng)的任務(wù)使用異步。

C#和C 的歷史與演變各有特色,未來前景也不同。1.C 由BjarneStroustrup在1983年發(fā)明,旨在將面向?qū)ο缶幊桃隒語言,其演變歷程包括多次標準化,如C 11引入auto關(guān)鍵字和lambda表達式,C 20引入概念和協(xié)程,未來將專注于性能和系統(tǒng)級編程。2.C#由微軟在2000年發(fā)布,結(jié)合C 和Java的優(yōu)點,其演變注重簡潔性和生產(chǎn)力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注于開發(fā)者的生產(chǎn)力和云計算。

可以采用多種方法修改 XML 格式:使用文本編輯器(如 Notepad )進行手工編輯;使用在線或桌面 XML 格式化工具(如 XMLbeautifier)進行自動格式化;使用 XML 轉(zhuǎn)換工具(如 XSLT)定義轉(zhuǎn)換規(guī)則;或者使用編程語言(如 Python)進行解析和操作。修改時需謹慎,并備份原始文件。

有三種將 XML 轉(zhuǎn)換為 Word 的方法:使用 Microsoft Word、使用 XML 轉(zhuǎn)換器或使用編程語言。

將 XML 轉(zhuǎn)換為 JSON 的方法包括:使用編程語言(如 Python、Java、C#)編寫腳本或程序進行轉(zhuǎn)換;使用在線工具(如 XML 轉(zhuǎn)換為 JSON、Gojko's XML 轉(zhuǎn)換器、XML 在線工具)粘貼或上傳 XML 數(shù)據(jù)并選擇 JSON 格式輸出;使用 XML 到 JSON 轉(zhuǎn)換器(如 Oxygen XML Editor、Stylus Studio、Altova XMLSpy)執(zhí)行轉(zhuǎn)換任務(wù);使用 XSLT 樣式表將 XML 轉(zhuǎn)換為 JSON;使用數(shù)據(jù)集成工具(如 Informatic

C# 多線程編程是一種讓程序同時執(zhí)行多項任務(wù)的技術(shù),它可以通過提升性能、提高響應(yīng)能力和實現(xiàn)并行處理來提高程序效率。雖然 Thread 類提供了直接創(chuàng)建線程的方法,但 Task 和 async/await 等高級工具可以提供更安全的異步操作和更簡潔的代碼結(jié)構(gòu)。多線程編程中常見的難題包括死鎖、競態(tài)條件和資源泄漏,需要仔細設(shè)計線程模型和使用適當?shù)耐綑C制來避免這些問題。

如何利用.NET構(gòu)建應(yīng)用?使用.NET構(gòu)建應(yīng)用可以通過以下步驟實現(xiàn):1)了解.NET基礎(chǔ)知識,包括C#語言和跨平臺開發(fā)支持;2)學(xué)習核心概念,如.NET生態(tài)系統(tǒng)的組件和工作原理;3)掌握基本和高級用法,從簡單控制臺應(yīng)用到復(fù)雜的WebAPI和數(shù)據(jù)庫操作;4)熟悉常見錯誤與調(diào)試技巧,如配置和數(shù)據(jù)庫連接問題;5)應(yīng)用性能優(yōu)化與最佳實踐,如異步編程和緩存。

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.
