C#基础——类、构造函数和静态成员
类
类是一个数据类型的蓝图。构成类的方法和变量称为类的成员,对象是类的实例。类的定义规定了类的对象由什么组成及在这个对象上可执行什么操作。
class 类名
{
(访问属性) 成员变量;
(访问属性) 成员函数;
}
访问属性:public(公有的,类中可以直接访问) ,protected受保护的 , private私有的(默认的)(私有的,其他的类中不可以直接访问)
如下类的示例,描述Box的信息(属性(成员变量)和Box的方法(函数))
class Box{public int row = 0;public int col = 0;public int rowBk = 0;public int colBk = 0;//备份public void Backup(){rowBk = row;colBk = col;}//返回备份public void Revert(){row = rowBk;col = colBk;}}
类的使用
在使用类的成员变量或者函数时,要先检查是否在同一个命名空间下,如果不是需要在开头使用
using + 类所在的命名空间名字
需要先创建一个对象。然后通过对象使用类里面的变量或者方法。
类名 对象名 = new 类名(); //创建对象
对象名.成员变量; //引用对象
static void Main(string[] args){Box Box = new Box(); // 声明 Box1,类型为 BoxBox.row = 5;Box.col = 6;Box.Backup();Console.WriteLine(Box.row + " " + Box.col);Console.WriteLine(Box.rowBk + " " + Box.colBk);Box.row = 10;Box.col = 12;Console.WriteLine(Box.row + " " + Box.col);Console.WriteLine(Box.rowBk + " " + Box.colBk);Box.Revert();Console.WriteLine(Box.row + " " + Box.col);Console.ReadKey();}
构造函数
默认构造函数
new一个对象时,会自动调用构造函数,一般用于初始化操作。如果没有写构造函数,系统会给一个默认的空的构造函数,我们可以在默认构造函数里面对成员变量进行赋初始值。
传参构造函数
当在需要创建新的不同的对象的时候,就需要使用传参构造函数。
class Box{public int row = 0;public int col = 0;public int rowBk = 0;public int colBk = 0;//默认构造函数/*public Box(){}*/public Box(){int row = 0;int col = 0;int rowBk = 0;int colBk = 0;}//传参构造函数public Box(int inRow,int inCol) { row = inRow;col = inCol;rowBk = inRow;colBk = inCol;}}
static void Main(string[] args){Box Box1 = new Box(5, 6); // 声明 Box1,类型为 BoxBox Box2 = new Box(10, 12); // 声明 Box2,类型为 BoxConsole.WriteLine(Box1.row + " " + Box1.col);Console.WriteLine(Box2.row + " " + Box2.col);Console.ReadKey();}
静态成员
使用 static 关键字把类成员定义为静态的。当我们声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个该静态成员的副本,它们的值可以通过直接调用类而不需要创建类的实例来获取。关键字 static 意味着类中只有一个该成员的实例。
class Test{public int Num1 = 0;public static int Num2 = 0;}internal class Program{static void Main(){Test num1 = new Test();num1.Num1++;//num1.Num2++; //报错}}
静态成员与普通成员的区别
接下来将对这两种成员进行加1操作,看看他们之间的区别。
以上示例中发现,静态成员不能通过实例化后使用,所以,可以在类中创建相应的接口或者方法(函数)来获取和修改静态成员。还可以直接使用 类名.静态成员 进行调用。
public void count(){num2++;}public int getNum(){return num2;}
Test.Num2++; //正确写法
直接让两者加1是看不出区别的,所以,再实例化一个对象出来,在执行加1的操作就可以看出两者的区别了。
class Test{public int Num1 = 0;public static int Num2 = 0;public void count(){Num2++;}public int getNum(){return Num2;}}internal class Program{static void Main(){Test num1 = new Test();Test num2 = new Test();//普通成员num1.Num1++;num2.Num1++;Console.WriteLine(num1.Num1);Console.WriteLine(num2.Num1);//静态成员//通过方法使用静态成员num1.count();num2.count();Console.WriteLine(num1.getNum());Console.WriteLine(num2.getNum());//通过 类名.静态成员 使用Test.Num2++;Console.WriteLine(Test.Num2);Console.ReadKey();}}
从运行结果中,我们可以看出 Num2 的结果是2,这就意味着,创建的第二个对象没有像普通成员那样重新获取了一次 Num1 的值 ,而是直接获取了被改变了值以后的 Num2。这说明静态成员在对象创建之前就已经存在,后面的操作都是直接对同一数据进行修改,而非修改不同的数据。
相关文章:

C#基础——类、构造函数和静态成员
类 类是一个数据类型的蓝图。构成类的方法和变量称为类的成员,对象是类的实例。类的定义规定了类的对象由什么组成及在这个对象上可执行什么操作。 class 类名 { (访问属性) 成员变量; (访问属性) 成员函数; } 访问属性:public(公有的&…...

hadoop学习(二)
一.MapReduce 1.1定义:是一个分布式运算程序的编程框架 1.2核心功能:将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 1.3优点 1)易于编程 它简单的实现一些接口&#…...

WXZ196微机消谐装置的运行方式了解一下
WXZ196微机消谐装置是一种用于抑制铁磁谐振的设备,可以在电力系统中快速消除各种频率的铁磁谐振,同时可以区分过电压、铁磁谐振以及单相接地,并给出相应的报警信号。该装置采用高速增强型单片机作为核心元件,对PT开口三角电压进行…...

单链表的建立
一.前言 单链表的建立一共有两种方法,一种是头插法,将元素插入在链表的头部,也叫前插法。另外一种则就是尾插法,将元素插入在链表尾部,也叫后插法。 二. 头插法 首先从一个空表开始,重复读入数据࿱…...

Shell脚本编程学习
IPv4和IPv6有什么区别? - 知乎 (zhihu.com) Shell 是一个命令解释权,它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。 可以查看当前系统的进程 ps -ef...

从宏基因组量化细菌生长动态
Introduciton 了解细菌在各种环境中的生长动态对于人类健康和环境监测等广泛领域至关重要。传统研究细菌生长的方法往往依赖于培养技术,这不仅耗时,而且对易培养的物种有偏向。然而,随着宏基因组测序技术的兴起,我们现在可以直接…...

Linux---git工具
目录 初步了解 基本原理 基本用法 安装git 拉取远端仓库 提交三板斧 1、添加到缓存区 2、提交到本地仓库 3、提交到远端 其他指令补充 多人协作管理 windows用户提交文件 Linux用户提交文件 初步了解 在Linux中,git是一个指令,可以帮助我们做…...

【JavaScript】函数的动态传参
Javacript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言&…...

从0到1,AI我来了- (4)AI图片识别的理论知识-II
上篇文章,我们理解了我们程序的神经网络设计,这篇我们继续,把训练迭代过程分析一下,完成这两篇文章,下面问题,应该能回答了。 一张图片,如何被计算机读懂?pytorch 封装的网络&#…...

2024 Java 高分面试宝典 一站式搞定技术面
前言 每年9月和10月,被业界称为“金九银十”,这是人才市场一年中最活跃的时期。此时,企业为了来年的业务扩展,纷纷加大招聘力度,空缺岗位众多,招聘需求集中。同时,初秋的招聘活动也避开酷暑&am…...

MongoDB - 聚合操作符 $eq、$gte、$in、$sum、$avg
文章目录 1. $eq2. $gte3. $in4. $sum5. $avg 1. $eq $eq比较两个值并返回:true (当值相等时)|false(当值不相等时) { $eq: [ <expression1>, <expression2> ] }构造测试数据: db.inventory…...

C语言 | Leetcode C语言题解之第279题完全平方数
题目: 题解: // 判断是否为完全平方数 bool isPerfectSquare(int x) {int y sqrt(x);return y * y x; }// 判断是否能表示为 4^k*(8m7) bool checkAnswer4(int x) {while (x % 4 0) {x / 4;}return x % 8 7; }int numSquares(int n) {if (isPerfect…...

在appium中,如何通过匹配图片来进行断言?
在Appium中进行图片匹配断言,可以使用OpenCV来实现。以下是使用Appium和OpenCV进行图片匹配断言的示例代码。 首先,需要确保安装了必要的库: pip install opencv-python-headless pip install opencv-python pip install numpy然后…...

昇思25天学习打卡营第21天|CV-Shufflenet图像分类
打卡 目录 打卡 ShuffleNet 网络介绍 ShuffleNet 模型架构 Pointwise Group Convolution Channel Shuffle ShuffleNet模块 ShuffleNet 模块代码 构建ShuffleNet网络 模块代码 模型训练和评估 模型训练 模型评估 模型预测 ShuffleNet 网络介绍 ShuffleNetV1是旷视科…...

python 图片转文字、语音转文字、文字转语音保存音频并朗读
一、python图片转文字 1、引言 pytesseract是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持识别图片中的文字,支持jpeg, png, gif, bmp, tiff等图片格式 2、环境配置 python3.6PIL库安装Google Tesseract OCR 3、安…...

SSRF (服务端请求伪造)
🎼个人主页:金灰 😎作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️ 🍊易编橙终身成长社群&#…...

SQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN
在SQL中,JOIN操作是连接两个或多个数据库表,并根据两个表之间的共同列(通常是主键和外键)返回数据的重要方法。其中,LEFT JOIN(左连接)、RIGHT JOIN(右连接)和INNER JOIN…...

[网鼎杯 2020 朱雀组]Nmap(详细解读版)
这道题考察nmap的一些用法,以及escapeshellarg和escapeshellcmd两个函数的绕过,可以看这里PHP escapeshellarg()escapeshellcmd() 之殇 (seebug.org) 两种解题方法: 第一种通过nmap的-iL参数读取扫描一个文件到指定文件中第二种是利用nmap的参数写入we…...

【React】详解“最新”和“最热”切换与排序
文章目录 一、基本概念和初始化二、切换与排序功能的实现1. 函数定义和参数2. 设置活动 Tab3. 定义新列表变量4. 根据排序类型处理列表4.1 按时间降序排序4.2 按点赞数降序排序 5. 更新评论列表 三、渲染导航 Tab 和评论列表1. map 方法2. key 属性3. className 动态赋值4. onC…...

BUUCTF [MRCTF2020]Ezpop
这道题对于刚接触到pop链的我直接把我整懵了,一边看着魔术方法一边分析 魔术方法可以看这里PHP 魔术方法 - 简介 - PHP 魔术方法 - 简单教程,简单编程 (twle.cn) 代码解析 经过以上的分析我们可以理一下解题思路:接收参数反序列化之前先触发…...

RV1126 Linux 系统,接外设,时好时坏(一)应该从哪些方面排查问题
在 Linux 系统中接外设时,遇到“时好时坏”的问题,可能是由多种因素引起的。以下是一些排查问题的建议。 1. 硬件方面的排查 1.1 连接检查 物理连接: 确保外设与主板之间的连接良好,检查插头、插座及线缆是否牢固。引脚配置: 确认设备树中引脚的配置是否正确,尤其是引脚…...

Vue实现简单小案例
一、创建文件夹 二、引用vue.js <script src"../js/vue.js"></script> 三、准备一个容器 <div id"app"><h1>Hello,{{name}}</h1> </div> 四、创建实例 <script>new Vue({el:"#app", //el用于指…...

【MATLAB APP】建立独立桌面APP
背景:已有MATLAB APP的.mlapp文件,但客户提出需要可以直接使用的exe文件。 要求:点开即用,无需下载MATLAB。使用者无法修改APP的代码。 一、环境配置 APP创建者:安装MATLAB R2023a,配置Application Compile…...

Spring的优缺点?
Spring的优缺点 直接回答相关的Spring的特点: IOC AOP 事务 简化开发: 容易集成JDBCTemplateRestTemplate(接口远程调用)邮件发送相关异步消息请求支持 更加深入就讲源码了 优点: 方便解耦,简化开发…...

第一百八十三节 Java IO教程 - Java目录事件、Java异步I/O
Java IO教程 - Java目录事件 当文件系统中的对象被修改时,我们可以监听watch服务以获取警报。 java.nio.file包中的以下类和接口提供watch服务。 Watchable接口WatchService接口WatchKey接口WatchEvent接口WatchEvent.Kind接口StandardWatchEventKinds类 可监视对…...

【设计模式】(万字总结)深入理解Java中的创建型设计模式
1. 前言 在软件开发的世界里,设计模式是一种被广泛接受并应用的解决方案。它们不仅仅是代码的设计,更是对问题的思考和解决的方法论。在Java开发中,特别是在面向对象的编程中,设计模式尤为重要。创建型设计模式,作为设…...

【全面讲解下Docker in Docker的原理与实践】
🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 👉目录 👉前言👉原理👉实践👉安全和最佳实践👉前言 🦛…...

Android Settings增加多击事件,增加开发者模式打开难度
软件平台:Android11 硬件平台:QCS6125 需求来源:用户通过系统异常崩溃,进入原生Settings页面,通过默认的多击版本号方式打开开发者模式,继而打开adb调试开关,安装三方apk。 对付这种需求本来有…...

【相机与图像】1. 相机模型的介绍:内参、外参、畸变参数
想着整理下相机模型(内容上参考 slam十四讲)、相机的内外参标定。方便自己的使用和回顾。 不过,内外参标定啥时候记录随缘 -_- 概述 【构建相机模型】 相机将三位世界中的坐标点(单位为米)映射到二维图像平面ÿ…...

Linux内核netlink机制 - 用户空间和内核空间数据传输
简介: Netlink socket 是一种Linux特有的socket,用于实现用户空间与内核空间通信的一种特殊的进程间通信方式(IPC) ,也是网络应用程序与内核通信的最常用的接口。 Netlink 是一种在内核和用户应用间进行双向数据传输的非常好的方式&a…...