C# -- static 关键字

这篇具有很好参考价值的文章主要介绍了C# -- static 关键字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、static关键字

static 关键字,用于修饰类,字段,属性,方法,构造方法等。被 static 修饰的类称之为“静态类”;
被 static 修饰的成员称之为“静态成员”,被修饰过的成员分别称为:静态字段,静态属性,静态方法,静态构造方法。

二、静态字段

1.概念
被 static 关键字修饰的字段,叫做“静态字段”。
静态字段不属于任何对象,只属于类,必须要用 类名.静态字段名 进行访问,反过来通过 对象名.静态字段名 的方式是访问不到静态字段的。

2.注意事项
静态字段是可以重新赋值的,类名.静态字段名 = 新的值;
静态字段存储的数据在内存中只有一份;
实例(对象)字段在内存中会有 N 份,有多少对象就会有多少实例字段;

例如:

C# -- static 关键字

C# -- static 关键字

三、静态属性

1.概念
被 static 关键字修饰的属性,叫做“静态属性”。
静态属性用于对静态字段进行封装,并保证静态字段值的合法性;
静态属性使用 类名.静态属性名 进行访问;

2.注意事项
静态属性不能用于封装非静态字段,因为静态的类成员是先于非静态的类成员存在的。在还没有对象之前,静态类成员就已经存在了
 

四、静态类

当类中的成员全部都是静态成员的时候,就可以把这个类声明为静态类

声明静态类时需要在class关键字之前就爱上static关键字

静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。

静态类的主要特性:

    仅包含静态成员。
    无法实例化。
    静态类的本质,是一个抽象的密封类,所以不能被继承,也不能被实例化。
    不能包含实例构造函数。
    如果一个类下面的所有成员,都需要被共享,那么可以把这个类定义为静态类。

静态类与私有构造函数区别

    私有构造器方式仍然可以从类的内部对类进行实例化,而静态类禁止从任何地方实例化类,其中包括从类自身内部。
    使用私有构造器的类中,是允许有实例成员的,编译器不允许静态类有任何实例成员。
    使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员,编译器将保证不会创建此类的实例。
    C#编译器会自动把它标记为sealed。这个关键字将类指定为不可扩展;换言之,不能从它派生出其他类。

例:

C# -- static 关键字

五、静态变量

    通过static关键字修饰,是属于类,实例成员属于对象,在这个类第一次加载的时候,这个类下面的所有静态成员会被加载。
    静态成员只被创建一次,所以静态成员只有一份,实例成员有多少个对象,就有多少份。
    类加载的时候,所有的静态成员就会被创建在“静态存储区”里面,一旦创建直到程序退出,才会被回收。
    变量需要被共享的时候,方法需要被反复调用的时候,就可以把这些成员定义为静态成员。
    在静态方法中,不能直接调用实例成员,因为静态方法被调用的时候,对象还有可能不存在。
    this/base 关键字在静态方法中不能使用,因为有可能对象还不存在。
    可以创建这个类的对象,制定对象的成员在静态方法中操作。
    在实例方法中,可以调用静态成员,因为这个时候静态成员肯定存在。
    非静态类可以包含静态的方法、字段、属性或事件。
    无论对一个类创建多少个实例,它的静态成员都只有一个副本。
    静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量。
    静态方法只能被重载,而不能被重写,因为静态方法不属于类的实例成员。
    虽然字段不能声明为 static、const,但 const 字段的行为在本质上是静态的。这样的字段属于类,不属于类的实例。

六、静态方法

    静态方法是不属于特定对象的方法。
    静态方法可以访问静态成员变量。
    静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变量做为参数传给静态方法。
    静态方法也不能直接调用实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态方法。

C# -- static 关键字

七、静态构造函数

    静态类可以有静态构造函数,静态构造函数不可继承。
    静态构造函数可以用于静态类,也可用于非静态类。
    静态构造函数无访问修饰符、无参数,只有一个 static 标志。
    静态构造函数不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。

C# -- static 关键字

 例:

C# -- static 关键字

 C# -- static 关键字文章来源地址https://www.toymoban.com/news/detail-418431.html

到了这里,关于C# -- static 关键字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【java】static关键字

    类与对象的关系 类是构建对象的模板,一个类可以构建多个对象。 类在 方法区 当中,对象在 堆 中。 static修饰的变量是 独属于类 的变量,没有给对象。 运行结果  static修饰的变量究竟储存在什么地方 在 方法区 当中有 静态常量池 ,static修饰的变量被放在静态常量池中,

    2024年04月15日
    浏览(21)
  • static关键字的作用

    大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们深入探讨在程序设计中经常使用的之一——“static”,并详细解析其作用。无论你是初学者还是有一定经验的开发者,了解如何正确使

    2024年02月02日
    浏览(29)
  • 【Java入门】final关键字、static关键字、内部类的认识

    前言 : final是Java中的一个修饰符,用于表示某个变量、方法或者类不能被修改。final可以用于修饰类、方法和变量(局部变量,成员变量)。被final所修饰的类不能被继承,被final所修饰的方法不能被重写,被final所修饰的变量,不能被重新赋值 。 static是Java中的一

    2024年02月11日
    浏览(33)
  • 【C】static关键字详解

    static的汉语意思是静态的,在C语言中static可以用来修饰 局部变量、全局变量和函数。 在这里给大家补充一个知识,我们的数据在内存中存储时,大概分为3个区域。 1. 栈区 :我们创建的局部变量、形参等一般就存放在这个区域,离开作用域是会自动销毁,将空间还给

    2024年02月10日
    浏览(32)
  • C++—static关键字详解

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 静态全局变量有以下特点: 1、该变量在全局数据区分配内存; 2、未经初始化的静态全局变量会被程序自动初始化为

    2024年02月15日
    浏览(26)
  • 详解const、static关键字

    目录   一、static 二、const 在c语言中: static是用来修饰变量和函数的         1.修饰局部变量——称为静态局部变量         2.修饰全局变量——称为静态全局变量         3.修饰函数——称为静态函数 有关内存相关知识补充: 程序的所有数据,也就是所有的

    2024年02月06日
    浏览(36)
  • java static关键字的作用

    用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享; 静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键; 用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于

    2024年02月08日
    浏览(32)
  • 2023.9 - java - static 关键字

     tips:  java 的 static修饰的 方法和变量 可以被 实例访问 ,但是typeScript 不可以。 static主要和Java的内存管理有关。我们可以将static与变量,方法,代码块一起使用。static属于该类,而不是该类的实例。 static可以修饰: 变量(也称为类变量) 方法(

    2024年02月10日
    浏览(30)
  • 详解Java的static关键字

    不依赖于对象实例:静态方法不需要依赖于任何对象实例,因为它们与具体的对象实例无关联。这意味着在没有创建对象实例的情况下,就可以直接通过类名访问或调用静态方法。 可以访问静态成员:静态方法可以访问类的静态成员(静态字段和静态方法),但不能访问非静

    2024年02月05日
    浏览(39)
  • 【C语言】static关键字详解

    目录 1.static是什么? 2.static修饰的对象是? 3.static修饰后改变了什么? 4.static修饰操作演示 (1) 局部变量 如果加了static修饰局部变量i会怎么样? 全局区(静态区) (2) 全局变量 如果给全局变量加上了static修饰呢? 二者区别?  这样用有什么用? (3) 函数 5.总结

    2024年02月10日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包