C#中ref和out的相关知识

OpenClaw插件配置错误修复完全指南 插件文件名是插件目录结构正确package.json配置正确OpenClaw的插件系统还在快速迭代,偶尔会遇到这种配置问题。看错误信息检查配置文件检查实际文件对比差异修复问题大部分问题都能解决。查看官方文档:https://openclaw.ai/docs提Issue:https://github.com/openclaw/openclaw/issues加入Discord社区求助快速修复命令汇总。 阅读详情

C#中变量之间的传递默认是值传递,什么叫值传递呢?就是说,当一个方法需要我事先定义的变量作为参数的时候,默认只是把变量的值传递过去了。
例如:

namespace ConsoleApplication1
{
    class Program
    {
        static void A(int x)
        {

            Console.WriteLine(x);
            x++;
            Console.WriteLine(x);
        }

        static void Main(string[] args)
        {
            int x=0;
            A(x);
            Console.WriteLine(x);
            Console.ReadKey();
        }
    }
}

A方法需要Main()方法中的变量x作为参数,此时知识把“0”传递给了方法A,A里面做了x++的运算,但是不影响Main()方法里面x的值,折旧相当于A方法中定义了另一个变量y用来承接x,A里面操作的是y,而不是x,因为A里面定义了一个int x,这两个x是不一样的,因为它们指向不同的地址。
这里写图片描述
那么我们希望Main()和A()都指向同一个地址的x怎么办呢?
那就不用值传递,用引用传递吧,把一个值作为一个引用传递过去。
ref和out就是专门干这种勾当的!
它们的区别是:用ref的时候要确保值已经被赋值了,而有的时候事先赋值没有意义,那就用out;

namespace ConsoleApplication1
{
    class Program
    {
        static void A(ref int x)  //区别在这里
        {

            Console.WriteLine(x);
            x++;
            Console.WriteLine(x);
        }

        static void Main(string[] args)
        {
            int x=0;
            A(ref x);    //区别在这里
            Console.WriteLine(x);
            Console.ReadKey();
        }
    }
}

最后输出:
这里写图片描述
注意,上面的代码中,int x=0;不给它赋值的话就会报错:
这里写图片描述
不赋值怎么办呢?那就用out呗:

namespace ConsoleApplication1
{
    class Program
    {
        static void A(out int x)
        {
            x = 2;    //这里再给它赋值
            Console.WriteLine(x);
            x++;
            Console.WriteLine(x);
        }

        static void Main(string[] args)
        {
            int x;
            A(out x);
            Console.WriteLine(x);
            Console.ReadKey();
        }
    }
}

运行结果:
这里写图片描述
事实证明:ref和out都可以把变量从值传递变换为引用传递。

【更新中260712】CRAIC中国机器人及人工智能大赛-机器人应用赛-智能产线赛项-备赛指南 2025年第二十七届中国机器人及人工智能大赛现已闭幕结合我小组自身备赛情况及见闻感悟,现整理成章。 阅读详情

相关推荐

2024最新超详细无痛安装PyTorch,包括下载地址、环境配置与各种避坑指南

PyTorch更新很快,2024最新下载安装经验贴,包括anaconda+CUDA+cuDNN+PyTorch四部分的下载和安装。文章详细介绍了下载地址、环境配置、虚拟环境建立的问题,还温馨提示了各种闭坑指南。有需要的友友快过来康康!

qq_43596278的博客 11万+

C#委托

1.什么是委托 ==理解委托最快的方式是把它看成一个类型安全的,面向对象的c++h函数指针!== 2.委托的概述 可以通过以下操作来使用委托: 1. 声明一个委托类型,委托声明看上去和方法声明类似,只是没有实现块。 2. 使用该委托类型声明一个委托变量。 3. 创建委托类型的对象,把它赋值给委托变量。新的委托对象包括指向某个方法的引用,这个方法和第一步定义的签名和返回类型一致。 ...

cBinnnn的博客 324

车载导航GPS欺骗

因此,如果我们能够模拟卫星信号,将模拟的信号通过信号发射装置发送给GPS传感器,那么就有可能实现欺骗GPS传感器获取虚假的位置信息,这种技术即SDR(软件无线电,Software Defined Radio)[2]。究其原因,在不使用时钟模块的条件下,HackRF发送信号的频率可能不十分精准,因此GPS传感器接收到信号之后可能无法正常解析GPS信号,因此时钟信号可能是HackRF进行GPS欺骗的关键。2)HackRF是否使用了时钟模块,时钟模块决定了信号发送频率的精准程度,对实验的成败也是至关重要的。

2503_90751789的博客 1324

小朋友学数据结构(5):顺序查找法

查找是最常见的数据操作之一,也是数据结构的核心运算之一,其重要性不言而喻。 顺序查找是最简单的查找策略,对于小规模的数据,顺序查找是个不错的选择。 (一)基本思想 从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败。 1 从表中的第一个元素开始,依次与关键字比较。 2 若某个元素匹配关键字,则查找成功。 3 若查找到最后一个元素还未匹配关键字,则查找失败。 (二...

小树学信奥 534

Apache Flink集成HDFS报错Failed to create checkpoint storage at checkpoint coordinator side.

在网上查询相关资料后,在flink的lib目录添加flink-shaded-hadoop-3-3.1.1.7.0.3.0-79-7.0.jar、commons-cli-1.5.0.jar两个包,但报错依旧存在,添加了export HADOOP_CLASSPATH=后面发现是hadoop与flink的兼容性问题,hadoop原先使用的是3.3.4,与多个版本的flink集成都会出现报错,最后将Hadoop的版本改成3.1.3,使用flink run运行jar包就没有这个错误了,在hdfs上成功保存了检查点。

zywenmag的博客 623

别再死记硬背了!一张图搞懂无刷电机半桥与全桥驱动的核心差异(附避坑指南)

本文深入解析无刷直流电机的半桥与全桥驱动方式的核心差异,提供直观对比与选型指南。半桥驱动结构简单、成本低,适合低要求场景;全桥驱动性能优越但复杂,适用于高精度控制。文章还包含实战避坑指南,帮助工程师优化驱动方案选择与应用。

weixin_29290947的博客 319

C#基础知识(5)

枚举 枚举:是一种数据类型,枚举适用于取值范围有限的数据 语法 [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举的访问权限修饰符与类一致,修饰符可写可不写。类的默认值为interal,枚举的默认值也是interal。 枚举名遵循大驼峰命名法。 枚举一般和switch-case结合使用。eg: public enum Season { spring, //0 summer, //1 autumn, //2 winter //3 } class Program {

weixin_43611922的博客 429

帆软 finereport FCRA 考试 题库+答案,共收录561题,大部分有答案

帆软 finereport FCRA 考试 题库+答案,共收录561题,大部分有答案 入门基础 11.多选题 以下方式中属于FineReport中预览模式的有( ) 分页预览、填报预览、新填报预览、数据分析、移动端预览 16.判断题 FineReport报表工具必须购买激活码后才能使用。 错误,可以免费获取激活码。 29.单选题 FineReport是一款利用( )语言开发的报表工具。java 41.多选题 访问帮助文档的方式有哪些?设计器中社区菜单下-帮助文档;直接访问http://help.finere

qq_37485720的博客 2万+

C#中ref和out相关知识点

ref和out相关

SunsetSunup的博客 222

《AI编程实战:深度学习模型改进与系统部署》,改进专栏目录和介绍

专深度学习相关项目都写在本专栏,《一次订阅解锁全部,都有源码,永久观看》,包括车牌识别、股票预测、人脸识别、风格迁移、图像修复、图像超分辨重建、图像分割等任务,Web/PyQt系统实现。引入Transformer、Swin Transformer、DenseNet、ViT、ConvNeXt等算法实战,提供卷积改进,魔改对比实验,模型剪枝,模型蒸馏,模型量化,全网独家整合改进专栏,为不同领域的同学发表论文提供了大力支持。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3270

xtop:multi_driven_net与incomplete_timing_cell fail reason 分析

man multi_driven_net”可以得知,这个问题是multi driven结构引起的,使用命令“get_failed_pins -reason multi_driven_net”,获取violation pin。“man incomplete_timing_cell”可以得知,这个fail reason的原因是缺少timing library cell,检查并补全后这个错误就显示了。这里选择的解决方法是修改lib文件,把inout改成input,重新lib2idb。通过这种方法解决了问题。

m0_61544122的博客 567

C# ref 和 out 的使用详解

C# ref 和 out 的使用详解

鲤籽鲲的博客 2780

R语言glm函数构建二分类logistic回归模型、epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值

R语言glm函数构建二分类logistic回归模型(family参数为binomial)、使用epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值)

statistics+insight+vista+power 1397

C# 基本语法-ref-out

using System; namespace lesson8_ref和out { class Program { #region 学习ref和out的原因 //学习ref和out的原因 //它们可以解决 在函数内部改变外部传入的内容 里面变了 外面也要变 static void ChangeValue(int value) { value = 3; }

weixin_61541885的博客 154

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ref 和out(c#)

此时arr数组还是原来的值,将arr赋值给array,两个数组都指向同一个堆上地址,然后因为array是new一个新数组,会在堆上开辟一个新空间,array指向这个新地址的内容,学ref和out的原因:它们可以解决在函数内部改变外部传入的内容,函数内部变,外部也要变。此时a还是1,把a的值赋给value,然后只是在栈上开了一个新空间,value等于3,ref 和out 使用就是在前加ref 和out ,调用的时候也要加。使用ref 和out可以使函数内部改变,外部也会改变传入的变量。

weixin_74353267的博客 526

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C#学习笔记——修饰方法参数关键字:ref和out

作用:修改方法内的ref和out变量将会直接改变方法外填入的变量,类似与C++中的&引用。知识点:可以通过定义多个ref和out参数实现一个方法带出多个返回值。区别:ref可以不修改,out则必须要修改后才能在方法中使用。

m0_64586576的博客 174

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C#知识点 字符串常用方法 goto语句 函数的参数数组 out与ref

【代码】C#知识点 字符串常用方法 goto语句 函数的参数数组 out与ref。

2201_76097779的博客 200

c#相关基础知识

值参:像Java的正常数据的传输ref:对参数的指向是参数本身的地址,而不是数据的副本,所以可以对数据进行直接操作out:绑定控件,控件传输值赋值给类中的内部类。

prisoneradvance的博客 355

C#out和ref的区别

ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。

weixin_39856293的博客 185

《CLR Via C#》学习笔记(六)【方法参数相关(out ref params)】

通常我们在使用方法的时候,方法的参数是按值传递的,如果传递的参数是引用类型的对象,是将引用对象的地址传给方法。如果传递的是值类型实例,传递给方法的是该实例的一个副本。允许使用在方法中按引用来传递参数,C#中使用out和ref关键字来体现。下面就来介绍out和ref的使用。 out 1 使用out时在方法的参数定义和方法的调用时都要用out关键字,如下: static void Main(string[] args) { string name = string.Empty; GetStr(o

极客神殿 342

c#之函数

函数是封装代码块的重要机制,具有封装代码、提升复用率和抽象行为三大作用。函数可在class或struct中定义,基本语法包含返回类型、函数名、参数列表和函数体。参数可以是任意类型,数量0到n个,返回值类型为void时表示无返回值。通过return关键字返回结果,void函数也可用return提前结束。函数的使用只需调用函数名并传入参数,返回值可直接使用或存储。ref和out参数通过传递内存地址实现内外变量同步修改,区别在于ref需初始化而out必须在内部赋值。变长参数使用params关键字,默认参数值使参数

2302_76625075的博客 1039

VB程序员眼中的C# 5

基础类是那些继承来的类。派生类是那些继承了一个基础类的类。   Constructor(构造器)   Constructor是一个方法,当构造一个类的一个对象时调用它,通常在初始化一个类时被使用。一个Constructor方法与类的名字相同、没有返回类型而且不返回任何值。   Ref 和 Out   将一个参数标记为 Ref 类型意味着对其值进行的任何修改都会维持,这与 VB 的‘

coolstar的调侃 961

C#类

1:在C#中,string str = null 与 string str = “” 请尽量使用文字或图 象说明其中的区别。 string str=null,表示一个空引用,没有占用了空间, string str= " ",表示一个空串,被实列化了,占用了内存空间, 2:简述类和结构的相同点和不同点。并用代码举例。 类: 类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段...

weixin_44751209的博客 288

【游戏客户端面试题干货】--2020年最新游戏客户端面试干货(c#篇)

【游戏客户端面试题干货】--2020年度最新游戏客户端面试干货( C#篇 ) 大家好,我是Lampard~~ 经过春招一番艰苦奋战之后,我终于是进入了心仪的公司。 今天给大家分享一下我在之前精心准备的一套面试知识。 今天和大家分享的是C#的面试题 本人亲测80%的引擎相关题目都是围绕着我总结出来的知识点提出的 。 一.结构和类的区别 1.结...

Lampard的博客 1816

C#基础(11)函数重载

我们通过这些例子的学习,想毕你一定已经掌握了函数重载的相关内容,我相信你只要稍加练习,便能达到很熟练的程度。不过不管知识点难或者简单,还是那句话,学习路上,戒骄戒躁,脚踏实地。请期待我的下一篇博客!

a6s686的博客 1678

20250528-C#知识:函数简介及函数重载

C#函数重载

qq_44965626的博客 446
上一篇: Unity知识五:Unity中ITween的回调函数的使用
下一篇: unity素材二:三个老头欧系战士模型带动作特效
博士装呗
博客等级 码龄11年 63粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值