在 C# 中,允許創建靜態類,方法是使用靜止的關鍵詞。靜態類隻能包含靜態數據成員和靜態方法。不允許創建靜態類的對象,因為它不允許創建對象,這意味著它不允許實例構造函數。靜態類是密封, 方法你不能從另一個類繼承靜態類.
用法:
static class Class_Name
{
// static data members
// static method
}
在C#中,靜態類包含兩種類型的靜態成員,如下所示:
- 靜態數據成員:由於靜態類總是包含靜態數據成員,因此使用 static 關鍵字聲明靜態數據成員,並使用類名直接訪問它們。靜態數據成員的內存是單獨分配的,與對象沒有任何關係。
用法:
static class Class_name
{
public static nameofdatamember;
}
- 靜態方法:由於靜態類總是包含靜態方法,因此靜態方法使用 static 關鍵字聲明。這些方法隻能訪問靜態數據成員,不能訪問非靜態數據成員。
用法:
static class Class_name {
public static nameofmethod()
{
// code
}
}
示例 1:
C#
// C# program to illustrate the
// concept of static class
using System;
namespace ExampleOfStaticClass {
// Creating static class
// Using static keyword
static class Author {
// Static data members of Author
public static string A_name = "Ankita";
public static string L_name = "CSharp";
public static int T_no = 84;
// Static method of Author
public static void details()
{
Console.WriteLine("The details of Author is:");
}
}
// Driver Class
public class GFG {
// Main Method
static public void Main()
{
// Calling static method of Author
Author.details();
// Accessing the static data members of Author
Console.WriteLine("Author name : {0} ", Author.A_name);
Console.WriteLine("Language : {0} ", Author.L_name);
Console.WriteLine("Total number of articles : {0} ",
Author.T_no);
}
}
}
輸出
The details of Author is: Author name : Ankita Language : CSharp Total number of articles : 84
示例 2:
C#
// C# program to demonstrate
// the concept of static class
using System;
// declaring a static class
public static class GFG {
// declaring static Method
static void display()
{
Console.WriteLine("Static Method of class GFG");
}
}
// trying to inherit the class GFG
// it will give error as static
// class can't be inherited
class GFG2 : GFG {
public static void Main(String[] args) {
}
}
編譯時錯誤:
prog.cs(20,7): error CS0709: `GFG2′: Cannot derive from static class `GFG’
解釋:在上麵的例子中,我們有一個名為的靜態類作者通過使用 static 關鍵字。這作者類包含名為的靜態數據成員A_name,L_name, 和T_no,以及一個名為的靜態方法details()。靜態類的方法隻需使用其類名來調用,例如作者.details();。我們知道靜態類不包含對象,因此 Author 類的數據成員是通過其類名訪問的,例如作者.A_name,作者.L_name, 和作者.T_no。
靜態類和非靜態類的區別
靜態類 | 非靜態類 |
---|---|
靜態類是使用 static 關鍵字定義的。 | 非靜態類不是使用 static 關鍵字定義的。 |
在靜態類中,不允許創建對象。 | 在非靜態類中,允許使用 new 關鍵字創建對象。 |
靜態類的數據成員可以通過類名直接訪問。 | 非靜態類的數據成員不能直接通過類名訪問。 |
靜態類始終包含靜態成員。 | 非靜態類可以包含靜態和非靜態方法。 |
靜態類不包含實例構造函數。 | 非靜態類包含實例構造函數。 |
靜態類不能從另一個類繼承。 | 非靜態類可以從另一個類繼承。 |
相關用法
- C# Stack.GetEnumerator()用法及代碼示例
- C# Stack.Clear()用法及代碼示例
- C# Stack.Peek()用法及代碼示例
- C# Stack.Clear用法及代碼示例
- C# Stack.Contains()用法及代碼示例
- C# Stack.CopyTo()用法及代碼示例
- C# Stack.Equals()用法及代碼示例
- C# Stack.GetEnumerator用法及代碼示例
- C# Stack.Peek用法及代碼示例
- C# Stack.Pop()用法及代碼示例
- C# Stack.Push()用法及代碼示例
- C# Stack.Synchronized()用法及代碼示例
- C# Stack.ToArray()用法及代碼示例
- C# Stack.ToString()用法及代碼示例
- C# Stack.Clone()用法及代碼示例
- C# Stack.Count用法及代碼示例
- C# Stack.IsSynchronized用法及代碼示例
- C# Stack轉array用法及代碼示例
- C# Stack用法及代碼示例
- C# String Clone()用法及代碼示例
- C# String Compare()用法及代碼示例
- C# String CompareOrdinal()用法及代碼示例
- C# String CompareTo()用法及代碼示例
- C# String Concat()用法及代碼示例
- C# String Contains()用法及代碼示例
注:本文由純淨天空篩選整理自ankita_saini大神的英文原創作品 C# | Static Class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。