C#常见技能_封装

news2024/11/15 9:12:26

大家好,我是华山自控编程朱老师

前几天一个学员在学习C#与封装交互时,也不知道封装可以用来做什么 。下面我们就详细讲讲C# 和封装交互的相关知识。

C#是一种面向对象的编程语言,封装是面向对象编程中的一个重要概念,通过封装可以将数据和操作数据的方法包装在一起,从而保证数据的安全性和一致性,同时也方便了代码的维护和修改。这篇文章将介绍 C# 中的封装和交互。

在 C# 中,封装指的是将类的实现细节隐藏起来,让外部代码无法访问和修改类的内部状态和实现细节。具体来说,C# 中实现封装有两种方式:访问修饰符和属性。

访问修饰符包括 public、private、protected 和 internal 等。其中,public 表示公共的,可以在同一程序集中的任何类中使用;private 表示私有的,只能在这个类中使用;protected 表示受保护的,可以在这个类和它的子类中使用;internal 表示内部的,只能在同一程序集中使用。

通过访问修饰符,我们可以控制哪些成员可以被外部代码访问,从而实现封装。比如,我们可以将类的属性设置为私有的,然后提供公共的方法来操作这些属性。这样,外部代码就无法直接访问和修改属性,只能通过类的方法来操作属性。

属性是 C# 中另一种实现封装的方式。属性其实就是一个类的成员,它可以让外部代码以类似于访问成员变量的方式来访问和修改类的状态,但是属性的实际实现可以是非常复杂的。C# 中定义属性的语法结构为:

[访问修饰符] 数据类型 属性名称

{

    get

    {

        // 获取属性值的方法

    }

    set

    {

        // 设置属性值的方法

    }

}

其中,get 和 set 表示获取和设置属性值的方法。我们可以在 get 方法中返回属性值,或者在 set 方法中对属性进行验证和修改。

通过使用访问修饰符和属性,我们可以在 C# 中实现封装,保证数据和代码的安全性和一致性。但是,封装并不是完美的,有时候我们需要在不破坏封装的前提下与其他代码进行交互。这种情况下,C# 提供了很多交互的方式,如函数参数、返回值、事件机制等。

在函数中,我们可以通过参数和返回值来进行交互。比如,我们可以将一个对象作为参数传递给一个函数,或者让函数返回一个对象,从而实现与其他对象的交互。使用参数和返回值可以方便地进行数据传递和状态更新。

事件机制是 C# 中另一种进行交互的方式。事件机制允许一个对象触发一个事件,并且提供一种机制让其他对象可以订阅这个事件。当这个事件触发时,所有订阅者都会得到通知,并且可以执行一些操作。这种机制可以方便地实现对象之间的通信和协作。

点击领取上位机编程全套入门教程+工具https://s.pdb2.com/pages/20230307/CnORDNt9HimMjNS.html

除了函数和事件,C# 中还有一些其他的交互方式,比如共享存储和消息传递等,这里不再赘述。

部分项目图片:

总之,封装是面向对象编程中的重要概念。在 C# 中,我们可以使用访问修饰符和属性来实现封装,保证数据和代码的安全性和一致性。如果想要写出高质量的 C# 程序,必须理解封装概念,并且能够熟练运用。。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CAN(1)-GD32

CAN-GD32 电路 CAN 是 Controller Area Network 的缩写,是 ISO 国际标准化的串行通信协议。 CAN总线的很多优点,使得它得到了广泛的应用,如传输速度最高到1Mbps, 通信距离最远到10km,无损位仲裁机制,多主结构。 CAN总线的标准 CAN总线标准之规定了物理层和数据链路层…

并发和并行的区别

目录 背景过程例子:定义:并发解决办法(Redisson):解决并发步骤(Redisson): 总结 背景 在设计Arpro第三版的时候马总提出了一个问题,我们认为人家表达是并发问题&#xf…

吉他如何实现内录or通过转接头和简易声卡连接电脑没有声音怎么办

目录 效果器or智能音箱 电吉他和效果器的连接 效果器和耳机or音箱连接 内录方法 为什么用6.5mm(入)转3.5mm(出)转接头内录无声音 整体连接图示 这篇文章我会以通俗的语言为初学者描述如何让电吉他“燃起来”,效果…

【每日算法 数据结构(C++)】—— 03 | 合并两个有序数组(解题思路、流程图、代码片段)

文章目录 01 | 👑 题目描述02 | 🔋 解题思路03 | 🧢 代码片段 An inch of time is an inch of gold, but you can’t buy that inch of time with an inch of gold. An inch of time is an inch of gold, but you cant buy that inch of time…

mysql——存储过程

目录 存储过程存储过程的优点创建存储过程调用存储过程查看存储过程查看存储过程的详细信息查看存储过程的属性 存储过程的参数删除存储过程存储过程控制语句 存储过程 存储过程是一组为了完成特定功能的SQL语句集合存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句…

【Openvino02】openvino2022.1加速卡Movidius Myriad测试以及问题解决

接上一篇,上一篇我们已经把环境什么的都安装好了,本篇主要做一下各种模型测试,模型下载验证等;背景这里就不多说了,上篇已经介绍过了。 一、安装开发验证环境 1.安装所需包 这里建议用清华和豆瓣的镜像相互替换&…

4K 免费的图片素材去哪里找?这6个网站告诉你答案。

推荐几个免费高清图片素材库,今后再也不用为找图片而发愁了,建议收藏起来~ 菜鸟图库 https://www.sucai999.com/pic.html#?vNTYxMjky ​ 网站主要是为新手设计师提供免费素材的,素材的质量都很高,类别也很多,像平面…

C++primer(第五版)第一章(开始)

面对八百多页的C圣经《Cprimer》我陷入了沉思。最近终于下定决心把它啃下来,现在打算记录每章的关键点,一是为了巩固知识,二是以后要复习什么的也不用再碰那本砖头。 1.1编写一个简单的C程序 书中给了几行代码: int main() {return 0; } …

Crypto__1

编码 莫斯密码 Base编码 常见的Base64 Base32 Base16 Base64 将通过ASCLL码改成二进制数 因为64是2的6次方 所以将原文转换的二进制数分别取六位,不足的补0 每次取出6bit,按照其值选择 ABBCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123…

大模型部署实战(四)——ChatGLM2-6B

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Linux内核开发有用的工具网站

Linux内核官方相关 Linux内核主线源码 https://github.com/torvalds/linux 最新内核说明文档 https://docs.kernel.org/index.html Linux内核模块相关 内核配置与驱动查询 https://www.kernelconfig.io/index.html 内核模块编程指南 https://sysprog21.github.io/l…

mybatis模拟04

create SqlSession Class package com.wsd.core;/*** description: 执行sql* author: Mr.Wang* create: 2023-06-24 16:55**/ public class SqlSession { }SqlSessionFactory 中创建 openSqlSession method to get a sql session instance /*** description Get sql session in…

中国人民大学与加拿大女王大学金融硕士——在职读研让能力加速提升

不管你是初入职场的小白,还是久经沙场的元老,想要在职场有所作为,就不要忽略自我能力提升。决定一个人当前职场价值不是他拥有了什么,而是他将来能够创造什么。如果你只盯着工作,那么你的眼界和薪资将会被工作所决定&a…

LeetCode动态规划(一)之动规思想概述基础题目

文章目录 动态规划开撸——基础题目1. lc509 斐波那契数2. lc746 使用最小花费爬楼梯3. lc63 不同路径II4. lc343 整数拆分 动态规划 记住动归5部曲: 1.确定dp数组(dp table)以及下标的含义 2.确定递推公式 3.dp数组如何初始化 4.确定遍历…

MySQL——变量与游标

今天我们来一起学习MySQL中的变量(系统变量与用户变量),以及什么是游标,游标如何使用? 1. 变量 在 MySQL 数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终…

2、动手学深度学习——线性神经网络:softmax回归的实现(从零实现+内置函数实现)

1、softmax回归 为了估计所有可能类别的条件概率,我们需要一个有多个输出的模型,每个类别对应一个输出。 为了解决线性模型的分类问题,我们需要和输出一样多的仿射函数(affine function)。 每个输出对应于它自己的仿射…

css基础知识八:如何实现两栏布局,右侧自适应?三栏布局中间自适应呢?

一、背景 在日常布局中,无论是两栏布局还是三栏布局,使用的频率都非常高 两栏布局 两栏布局实现效果就是将页面分割成左右宽度不等的两列,宽度较小的列设置为固定宽度,剩余宽度由另一列撑满, 比如 Ant Design 文档…

计算机网络 期末复习大总结 + 例题【全部复习】

计算机网络 期末复习大总结 例题 第 1 章 概 述TCP/IP 和 ARPANET端系统的通信方式互联网的核心部分 - 分组转发电路交换分组交换报文交换计算机网络的 性能指标 第二章 物理层信号 和 码元信道基带信号 和 调制常用的编码方式奈氏准则信噪比香农公式信道复用 第三章 数 据 链…

三阶魔方公式

1. 术语:上、下,左、右、前、后 2. 魔方实物图 上:黄色 下:白色 左:蓝色 右:绿色 前:红色 后:橙色 3. 转法 上加:上面顺时针转90 上减:下面逆时针转90 上2&…

Django项目之mysql数据库连接和表的创建

数据库连接 首先,确保我们已经生成了一个基本的Django项目文件,目录结构如下: 具体搭建流程参考链接:https://blog.csdn.net/David_house/article/details/131188889?spm1001.2014.3001.5502找到项目下的settings文件&#xff…