C# Static关键词的使用

2022-12-21,

一、C#中类的方法分为静态方法和非静态方法

静态方法有Static关键词修饰

静态方法归类所有,而非静态方法归类的实例所有:静态方法无需类去实例化可直接调用

静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域。而类的非静态成员会在类实例化后分配内存中的区域

静态方法和非静态方法的区别

非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。

因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存,C#静态方法调用时无法判断非静态成员变量使用的内存地址,所以静态方法访问不到非静态成员,而静态变量的地址对类来说是固定的,故可以在实例化前访问使用。

static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是属于整个类!

静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁(主进程结束后才会销毁),而实例化的则可以做销毁。

静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.

C#静态方法中获取类的名称

静态方法中用:
        string className =   System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.FullName;

非静态方法中还可以用:
string className = this.GetType().FullName;

二、静态类(被static修饰的类)

静态类的特点

静态类不能实例化对象
静态类不能存在非静态成员(变量,函数)
静态类里的构造方法不能有权限修饰符(public,private...)不能有参数
静态类不能被其他类继承,也不能继承其他类

下面是代码理解

namespace _2022test
{
public static class Students
{
/*静态类中不允许写非静态的成员
public int name;
public int Name
{
get
{
return name;
}
}
*/
/*
public Students(){ }//静态类中不能写构造方法
*/
public static int name;
public static int Name
{
set
{
name = value;
}
}
public static void Score() { } static Students()//静态的构造方法不能有权限修饰符和参数
{ } } class Program
{
static void Main(string[] args)
{
//Students stu = new Students();静态类不能实例化对象 }
}
}

C# Static关键词的使用的相关教程结束。

《C# Static关键词的使用.doc》

下载本文的Word格式文档,以方便收藏与打印。