C# 中的静态关键字

C# 语言中的 static 关键字用于声明静态类和静态类成员。静态类和静态类成员(如构造函数、字段、属性、方法和事件)在只需要一个对象(类或类成员)副本并在类型(和成员)的所有实例(对象)之间共享时很有用。

让我们简化一下。假设您有一个类“CSharpSite”,它代表 C#Site网站、其属性及其功能。CSharpSite 类有四个属性,Founder、YearFounded、Location 和 Description。我们知道所有这些属性都是固定的,无论各种程序或类创建了多少个 CSharpCorner 类型的实例,它们都不会改变。这是一个静态类和静态属性的完美示例。

**注意:**您可以更改静态成员值,但最后更新的值将对调用静态成员的所有程序或调用者可用。

让我们看看一些简单例子的用法并尝试理解这些概念。

C# 中的静态变量

变量可以声明为静态。

案例分析

当我们不想创建一个变量的多个实例时,即我们想要在类的多个实例之间访问相同的值时,我们可以选择一个静态变量。

要访问静态变量,我们不需要创建类的对象。可以通过类名来访问。

注意: 如果我们在非静态方法中操作静态变量,那么每次创建对象时都会调用非静态方法,并且对静态变量的更改将在先前创建的每个对象之间共享。

我们来看一个例子。

执行 Add2Numbers() 方法后,静态变量的值已更新为 20。

现在我们再创建一个对象来调用 PrintStaticVariable() 方法。执行 PrintStaticVariable() 方法后,所有位置的值均已修改为 30。

C# 中的静态方法

案例分析

当我们有一个场景,只关注输出而不需要存储或检索某个类的特定实例所特有的数据时,我们可以选择静态方法。

要访问静态方法,我们也需要使用类名。不需要实例。

问:静态方法可以访问非静态字段吗?

答案是肯定的。静态方法可以直接访问静态字段,而无需使用类名。但是,要访问非静态字段,需要创建一个对象。上图显示了一个示例。

C# 中的静态类

案例分析

当我们将类中的所有成员函数和数据成员声明为静态时,我们应该将该类声明为静态。换句话说,我们可以说静态类不应包含任何非静态字段/方法。

我们来看一个例子。
https://www.c-sharpcorner.com/UploadFile/36bc15/static-keyword-in-C-Sharp/Images/read%20error.jpg

在上面的例子中,我们得到了一个编译时错误。提示说不能在静态类中声明实例成员。

问:如果在静态类中,我们没有非静态成员/函数,那么它是否拥有任何默认构造函数?

**答案是:**是的,它确实有一个构造函数,但它也被声明为静态的。

在上面的例子中,我们尝试创建一个实例构造函数,但在编译时出现错误。因此,我们将其声明为静态。

现在我们已经将构造函数声明为静态的,但是在编译时,我们再次遇到一个错误。


那么,让我们纠正这个错误。要纠正这个错误,我们必须删除公共访问修饰符。

问:静态构造函数可以有 public/private/internal/protected internal 访问修饰符吗?

答案是:,静态构造函数不包含任何访问修饰符。我们已经在前面的例子中看到了实现。

声明为静态的类/方法/字段的内存管理

当引用静态类的程序加载时,.NET Framework 公共语言运行时 (CLR) 会加载该类的信息类型。程序无法准确指定类的加载时间。但是,可以保证在程序中第一次引用该类之前加载该类,并初始化其字段并调用其静态构造函数。静态构造函数仅调用一次,并且静态类在程序所在的应用程序域的整个生存期内都保留在内存中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/734747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

永磁同步电机FOC调试记录(一)

永磁同步电机FOC调试记录(一) 前言架构硬件架构软件架构 调试过程元器件选型开环控制编码器调试速度采样电流检测中断优先级的确定电流环部分烧坏IPM速度-电流环位置-电流环 结语 前言 这是我个人从零开始尝试永磁同步电机(PMSM)…

通用大模型 vs垂直大模型:AI界的“宫斗大戏”

科技圈最近可真热闹,AI大模型的“宫斗大戏”让人眼花缭乱。两个阵营:通用大模型和垂直大模型,正在上演一场激烈的“权力的游戏”。到底谁能笑到最后?咱们一起来“吃瓜”看看吧! 首先,登场的是“全能王”通…

leetcode 动态规划(基础版)最长回文字串

题目: 题解: 首先回文子串肯定是连续的,如果用dp来做就需要找出一个串的所有连续子串,枚举一个串所有连续子串的可行方案是首先枚举子串的右端点,范围是(0~s.size()-1),在每一个右端点中枚举左…

字节大牛耗时八个月又一力作,Android性能调优秘籍:设计思想与代码质量优化+程序性能优化+开发效率优化(全网疯传)

第一章、设计思想与代码质量优化 一、六大原则 二、设计模式 三、数据结构 四、算法 第二章、 程序性能优化 一、启动速度与执行效率优化 二、 布局检测与优化 三、 内存优化 四、耗电优化 五、网络传输与数据存储优化 六、APK 大小优化 第三章、 开发效率优化 一、…

八大排序浅入浅出

1)选择一个增量序列t1,t2,…,tk,其中ti>tj,tk1; 2)按增量序列个数k,对序列进行k 趟排序; 3)每趟排序,根据对应的增量ti&#xff…

FlinkCDC pipeline模式 mysql-to-paimon.yaml

flinkcdc 需要引入: source端: flink-cdc-pipeline-connector-mysql-xxx.jar、mysql-connector-java-xxx.jar、 sink端: flink-cdc-pipeline-connector-paimon-xxx.jar flinkcdc官方提供connect包下载地址,pipeline模式提交作业和…

Linux查看公网IP的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

STM32单片机BKP备份寄存器和RTC实时时钟详解

文章目录 1. Unix时间戳 2. UTC/GMT 3. 时间戳转换 4. BKP简介 5. BKP基本结构 6. RTC简介 7. RTC框架图 8. RTC基本结构 9. 代码示例 1. Unix时间戳 实时时钟,本质上是一个定时器,专门用来产生年月日时分秒。 Unix 时间戳(Unix T…

Apple - Cocoa Event Handling Guide

本文翻译整理自:Cocoa Event Handling Guide( https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/EventOverview/Introduction/Introduction.html#//apple_ref/doc/uid/10000060i 文章目录 一、导言本文件的组织另见 二、事件…

如何通过防泄密U盘,实现数据传输的安全性及可控性?

随着信息技术的发展,U盘作为重要的数据存储和传输工具,其安全性越来越受到关注。在日常办公中,经常会遇到这类情况:员工为了方便,随意使用U盘拷贝公司的机密资料。一旦U盘丢失或者被窃取,公司的机密资料就有…

Part 8.2 最短路问题

很多题目都可以转化为最短路的模型。因此&#xff0c;掌握最短路算法非常重要。 >最短路模板< 【模板】全源最短路&#xff08;Johnson&#xff09; 题目描述 给定一个包含 n n n 个结点和 m m m 条带权边的有向图&#xff0c;求所有点对间的最短路径长度&#xff…

vue-Router实现原理

http://localhost:8080/home 三、HashHistory hash("#")的作用是加载 URL 中指示网页中的位置。# 号后面的 hash值&#xff0c;可通过 window.location.hash 获取 特点&#xff1a; hash 不会被包括在 http 请求中&#xff0c;&#xff0c;对服务器端完全无用&…

《黑悟空》抢先版

当《西游记》的古老传说与现代潮流碰撞&#xff0c;一个全新的西游世界在《黑神话悟空》中缓缓展开。你&#xff0c;作为被选中的“天命人”&#xff0c;将踏上一段寻找真相的奇幻旅程。在这里&#xff0c;中国神话的深邃与东方魔幻的绚丽交织&#xff0c;构建出一个令人叹为观…

VBA技术资料MF165:关闭当前打开的所有工作簿

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

Origin较好用的科研绘图软件

推荐自己也在用的科研绘图软件Origin图所示&#xff1a; 图1 图2 图3

Android 装逼技术之暗码启动应用

AdapterView.OnItemClickListener, TextWatcher, PopupMenu.OnMenuItemClickListener, DialpadKeyButton.OnPressedListener { //…… Override public void afterTextChanged(Editable input) { // When DTMF dialpad buttons are being pressed, we delay SpecialChar…

FPGA国内”薪“赛道-在医疗领域的应用

mian 免 ze 责 sheng 声 ming 明 以下观点仅代表个人观点&#xff0c;不代表任何公司或者行业 从下游应用市场来看&#xff0c;通信和工业市场份额位居FPGA芯片一二位&#xff0c;同时通信市场份额有望持续提升。但是目前通信和工业市场趋于稳定&#xff0c;FPGA厂商一直推AI市…

408计算机组成原理

todo:有逻辑的分门别类的整理笔记&#xff0c;方便复习 总 理解不了就直接背下来&#xff0c;学越多就越能理解 计算机系统概述 简要目录 基本概念 字长 MAR MDR PC IR CU ALU 通用寄存器、标志寄存器、标志控制器 ACC 地址译码器 通用寄存器 PU C语言编译过程 数据通路带…

FlinkCDC sink paimon 暂不支持exactly-once写入,而通过 幂等写

幂等写入&#xff1a; 一个幂等操作无论执行多少次都会返回同样的结果。例如&#xff0c;重复的向hashmap中插入同样的key-value对就是幂等操作&#xff0c;因为头一次插入操作之后所有的插入操作都不会改变这个hashmap&#xff0c;因为hashmap已经包含这个key-value对了。另一…

基于matlab的BP神经网络分类预测

1.神经网络结构 本文网络结构如图1所示&#xff1a; 图1 网络结构 图1给出的并不是单纯的bp神经网络结构这里设置了三个隐藏层&#xff0c;神经元个数分别为6&#xff0c;3&#xff0c;3&#xff0c;输入层12个特征输入&#xff0c;输出层输出4个类型结果。 2.代码 %% 清空环…