C#常见技能_参数传递

news2024/12/24 20:50:55

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

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

C#是一种面向对象的编程语言,支持多种参数传递方式,包括传值和传引用两种方式。在本文中,我们将讨论C#中的参数传递方式以及如何使用它们来实现不同的交互模式。

一、参数传递方式

在C#中,参数传递方式主要有两种:传值(值类型)和传引用(引用类型)。传值是指将变量的值复制一份作为参数传递,而传引用是指将变量的地址作为参数传递。下面是一个例子:

public void SetValue(int val)

{

val = 10;

}

public void SetArrayValue(int[] arr)

{

arr[0] = 10;

}

在上面的代码中,我们定义了两个方法:SetValue和SetArrayValue。SetValue方法接受一个int类型的参数val,并将其设置为10,而SetArrayValue方法接受一个int[]类型的参数arr,并将其第一个元素设置为10。

二、传值

当我们将值类型的变量作为参数传递时,实际上是将该变量的值复制一份作为参数传递。这意味着在方法内部修改该变量的值并不会影响原始变量的值。下面是一个例子:

int num = 5;

SetValue(num);

Console.WriteLine(num); // 输出5

在上面的代码中,我们创建了一个名为num的int类型变量,并将其值设置为5。然后,我们将num作为参数传递给SetValue方法,该方法将num的值设置为10。但是,在输出num的值时,我们发现它仍然是5。

这是因为SetValue方法修改的是它自己的局部变量val的值,而不是原始变量num的值。这就是传值的特点。

三、传引用

当我们将引用类型的变量作为参数传递时,实际上是将该变量的地址复制一份作为参数传递。这意味着在方法内部修改该变量所指向的对象的值会影响原始变量所指向的对象的值。下面是一个例子:

int[] arr = { 1, 2, 3 };

SetArrayValue(arr);

Console.WriteLine(arr[0]); // 输出10

在上面的代码中,我们创建了一个名为arr的int[]类型变量,并将其值设置为{1, 2, 3}。然后,我们将arr作为参数传递给SetArrayValue方法,该方法将arr的第一个元素设置为10。在输出arr的第一个元素时,我们发现它已经被修改为10。

这是因为SetArrayValue方法修改的是它所接收的引用类型变量arr所指向的对象(即数组)的值,而不是arr本身。这就是传引用的特点。

部分项目图片:

总结

在本文中,我们讨论了C#中的参数传递方式以及如何使用它们来实现不同的交互模式。传值和传引用是C#中最常见的参数传递方式,它们分别具有不同的特点和应用场景。另外,我们还介绍了单向交互模式、双向交互模式和回调交互模式等常见的交互模式,并给出了相应的示例代码。希望本文能够帮助您更好地理解C#中的参数传递方式和交互模式。

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

 

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

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

相关文章

Ubuntu18.04 下配置Clion

配置Clion 安装gcc、g、make Ubuntu中用到的编译工具是gcc©,g(C),make(连接)。因此只需安装对应的工具包即可。Ubuntu下使用命令安装这些包: (1)安装gcc sudo apt install gcc&am…

Mysql错误日志、通用查询日志、二进制日志和慢日志的介绍和查看

一.日志 1.日志和备份的必要性 日志刷新 2.mysql的日志类型 (1)错误日志 查看当前错误日志和是否记录警告设置 (2)通用查询日志 查看通用查询日志的设置 (3)二进制日志 查看二进制文件的设置&…

【Java基础教程】(四十五)IO篇 · 中:转换流、内存流和打印流(探索装饰设计模式与PrintStream类的进阶),文件操作案例实践、字符编码问题~

Java基础教程之IO操作 中 🔹本节学习目标1️⃣ 转换流2️⃣ 案例:文件复制3️⃣ 字符编码4️⃣ 内存流5️⃣ 打印流5.1 打印流设计思想——装饰设计模式5.2 打印流5.3 PrintStream 类的改进 🌾 总结 🔹本节学习目标 掌握内存操作…

C++初阶 - 5.C/C++内存管理

目录 1.C/C的内存分布 2.C语言中动态内存管理方式:malloc、calloc、realloc、free 3.C内存管理方式 3.1 new/delete操作内置类型 3.2 new 和 delete操作自定义类型 4.operator new 与 operator delete 函数(重要点) 4.1 operator new 与…

Go语言开发者的Apache Arrow使用指南:扩展compute包

在本系列文章的第4篇《Go语言开发者的Apache Arrow使用指南:数据操作》[1]中我们遇到了大麻烦:Go的Arrow实现居然不支持像max、min、sum这样的简单聚合计算函数:(,分组聚合(grouped aggregation)就更是“遥不可期”。要想对从CSV读取的数据[2…

如何在代码中用宏定义确定VS编译器版本

我们经常需要将同一个代码文件在不同的编译器下编译,实际上对应着不同的代码,这个时候就可以使用宏定义来进行判断,比如如下代码: #if _MSC_VER >1900 // VS2015或者以上 #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECUR…

第十四届蓝桥杯大赛青少年省赛C++组试题真题 2023年5月

一、选择题 第 1 题 单选题 C中,bool类型的变量占用字节数为 ( )。 A. 1 B. 2 C. 3 D. 4 第 2 题 单选题 以下关于C结构体的说法,正确的是 ( )。 A. 结构体中只能包含成员变量,不能包含成员函数 B. 结构体不能从另一个结构体继承 …

发布npm包流程

发布npm包的步骤如下: 在终端中通过 npm init 命令创建一个新的npm包,按照提示填写包的信息,如包名称、版本、描述、作者、许可证等。 在包的根目录下创建一个 index.js 文件,编写你的代码。 确认你已经注册了npm账号&#xff0…

Vue二次封装axios为插件使用

基本的封装要求:统一 url 配置 统一 api 请求 request (请求)拦截器,例如:带上token等,设置请求头 response (响应)拦截器,例如:错误处理,页面重定向等 根据需要,结合 Vuex 做全局的…

【三维点云处理】顶点、面片、邻接矩阵、邻接距离矩阵以及稀疏存储概念

文章目录 vts和faces基础知识vertices-节点(3是点的三维坐标)faces-面片(3是构成三角形面片的3个点) 邻接矩阵邻接距离矩阵(NN500)稀疏矩阵 vts和faces基础知识 vertices-节点(3是点的三维坐标…

git 实操

首先有安装好的git,安装好后,会在任一目录下右键出现git bash和git gui两个选项 打开git bash,设置好全局变量,用户名和邮箱,设置方法为: git config -- global user.name "xxx" git config --global user.email "xxxxxx.com" 1.创建版本库 git init 命…

Photoshop2023beta常见问题|ps 2023测试版智能AI功能不能用如何解决?

PS beta ai创成式填充用不了怎么办 生成图像出错解决方法?PS 2023最新版本更新了超强大的AI功能,可以一键生成或删除用户选中的内容,这可大大提高了生成图片的效率。生成出来的图片也被公认为质量超高,虽然偶尔可能有点小瑕疵&…

ajax/axios访问后端测试方法

文章目录 1、浏览器执行javascript方法GET请求POST请求 2、Postman测试工具GET请求POST请求 3、idea IDE提供的httpclient4、Apache JMeter 1、浏览器执行javascript方法 GET请求 http://localhost:6060/admin/get/123 POST请求 技巧:打开谷歌浏览器&#xff0c…

混战源起 ChatGPT,中国的 AI 产业怎么样了?

文章目录 前言一、回顾上半年的“百模大战”1.1 什么是“百模大战”1.2 AI大模型对我们的影响 二、中国AI产业现状三、我国在AI产业的前景与挑战结语 前言 北京时间7月13日凌晨,马斯克在Twitter上宣布:“xAI正式成立,去了解现实。”马斯克表示…

【Linux Shell】基础知识

Linux Shell基础知识 一、Linux Shell基础概念1.1 Shell定义1.2 命令行提示符 二、初识Shell2.1 Shell定义2.2 登录Shell相关文件2.3 Shell中的变量变量类型变量的引用单引号\ 与双引号\" \"变量的删除与检查 2.4 Shell中的扩展大括号扩展{ }其他扩展 一、Linux Shel…

STM32MX配置EEPROM(AT24C02)------保姆级教程

———————————————————————————————————— ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动&#x…

临床检验系统LIS

临床检验系统(Laboratory Information System)是一个能实现检验信息电子化、检验信息管理自动化的网络系统,其主要功能是将检验的实验仪器传出的检验数据经分析后,生成检验报告,通过网络存储在数据库中,使医生能够方便、及时的看到…

助力中小企业数字化改造 象过河把中小企业老板当成“自己人”

燥热的夏日午后,在郑州市国家大学科技园附近的一家咖啡店里约见了象过河软件研发的总负责人象海先生。 温文儒雅、润物无声的象海先生自信豁达、成熟冷静。软件开发技术出身的他,善于通过软件开发定制来帮助中小企业解决各种错综复杂的业务、仓储以及财…

Could not resolve placeholder

本质原因:项目启动未扫描到该配置,一般来说是配置不对 检查方向 1、检查编译后的target包里是否有该配置所在的文件 如果不在就clear,重新编译启动再去检查 2、检查启动的环境是否匹配 编译后的target包下的配置文件名称是否跟启动类的环境…

app流量变现流量分发策略——waterfall技术

waterfall,中文翻译为“瀑布流”,字面意思理解就是“从上往下流”,但“从上到下”这四个字该如何理解? 在广告行业中,waterfall指的是“在无法实时评估每次流量的价值时,基于历史eCPM数据,从上…