在 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。