关于C#类中方法的参数 ref,out,params...

(C#) 精简 C# 入门(三) 最近在做一些需要用到 C# 开发的项目,许久未碰有些生疏,因此决定把语言的基础内容先都快速过一遍。为方便查阅,挑选最精简的部分整理于该博客。 【说明】 本系列的目标是整理出十个左右的博客(传送门),其中每个博客大概包含 10 个左右的非常简短的 Section,适合快速入门。目前更新到:精简 C# 入门(三) 本系列不适用于完全的编程初学者(未接触任何计算机语言),这一类读者建议仔细学习【参考资料】中的视频资源 【参考资料】 1.b站:【01_C#入门到精通】新手强烈推荐:C#开发课程,一整套课程 文章 阅读详情

  C#类中方法的参数有 (1)值参数  

            (2)引用参数(ref)

            (3)输出参数(out)

                                                (4)数组参数(params)

            (5)可选参数 < 这个只在C#4.0中才有,在编译代码时要注意选择的版本号  >

对于值参数就不多说了,主要说一下引用参数、输出参数和数组参数:

(1)引用参数 用ref来修饰,要注意它和值参数的区别是一个是数据的副本一个是数据的地址。所以,值参的变化不会影响到实际的数据而引用参数的变化就会影响到实际的数据;

 static void Main(string[] args)
        {
            int i = 1;
            int j = 2;
            add(ref i,ref j);
            Console.WriteLine("i={0}",i);
            Console.WriteLine("j={0}",j);
            Console.Read();
        }
        private static void add(ref int i, ref int j)
        {
            i = i + j;
        }

它输出的结果是: i=3

                                    j=2

(2)输出参数 用 out 来修饰。以前我们学到的C或者是C++中的思想是,一个函数不可以实现多个返回值的返回,而这个正好解决了这个问题。看看例子吧

static void Main(string[] args)
        {
            int i, j;
            OutVa(out i,out j);
            Console.WriteLine("i={0}",i);
            Console.WriteLine("j={0}",j);
            Console.Read();
        }
        public static void OutVa(out int i, out int j)
        {
            i = 1;
            j = 2;
        }
它输出的结果是: i=1

                                    j=2;

(3) 数组参数 用 params修饰。它传递的参数的个数是不确定的。一般在方法体中都通过循环的方法来处理数组参数。看看例子吧

 static void Main(string[] args)
        {
            Test("a");
            Test("b","c");
            Test("e","f","g");
            Console.Read();
        }
        static void Test(params string[] args)
        {
            for (int i = 0; i < args.Length; i++)
            {
                Console.Write(args[i]+" ");
            }
           
        }
输出的结果:a b c d e f g

至于其它的参数都比较简单,这里不再多说。

ESP-01S获取网络时间踩坑全记录:AT指令调试、JSON解析乱码、时区处理,一个都不能少 本文详细记录了使用ESP-01S WIFI模块获取网络时间的完整过程,包括AT指令调试、JSON解析乱码处理以及时区转换等关键步骤。通过实战案例和代码示例,帮助开发者避开常见陷阱,实现稳定的网络时间同步功能。 阅读详情

相关推荐

Win10下ISE14.7安装避坑全记录:从License加载失败到ChipScope连不上,我踩过的雷都在这了

本文详细记录了在Win10系统下安装ISE14.7时遇到的常见问题及解决方案,包括License加载失败、IMPACT闪退、ChipScope连接故障等。通过实际案例和步骤解析,帮助用户避开安装陷阱,确保FPGA开发工具顺利运行。特别针对license问题提供了兼容性设置和文件修改的实用技巧。

weixin_42683394的博客 225

CSharp ref与out关键字

1.为什么要出现这两个关键字? 答案:用于解决只能的返回一个值的问题 2.他们两者的相同点? 答案:(1)传递的都是地址,即都是通过引用方式传递的。 (2)使用关键字后参数的值都会发生改变 3.他们两者的不同点? 答案:ref关键字传输参数之前必须对参数进行初始化反之out关键字不需要。 4.怎么用? 省略。。。。。 ...

qq_53679247的博客 1575

【老生谈算法】可视化通道流中瞬时涡量场的算法实现与MATLAB源码分析——瞬时涡量场

本文旨在探讨可视化通道流中瞬时涡量场的方法,并通过MATLAB编程实现这一过程。涡量场作为描述流体旋涡强度和方向的重要物理量,对于理解复杂流体运动具有重要意义。本文首先介绍了涡量场的基本概念,随后详细阐述了从测量数据收集到涡量场可视化的完整流程,并给出了相应的MATLAB源码。通过实际运行该源码,我们展示了涡量场的可视化结果,并讨论了其在流动结构识别和动力学行为理解中的应用。关键词: 涡量场;流体运动;MATLAB;可视化;PIV一、引言。

m0_53407570的博客 1125

C# 下ref和out 参数使用

[csharp]using System;using System.Collections.Generic;using System.Text;namespace CSharp下ref及out关键字使用{ class Program { /*参数说明 * ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数...

java开发指南博客 【转载】 292

【安全加固】应对Sweet32攻击:TLS/SSL协议3DES漏洞深度解析与修复指南

本文深度解析了CVE-2016-2183(Sweet32攻击)漏洞,该漏洞利用TLS/SSL协议中3DES加密算法的64位块大小缺陷,通过大量数据流量实施“生日攻击”导致信息泄露。文章提供了从原理分析、系统排查到跨平台修复的完整指南,重点指导如何在Windows、Linux服务器及网络设备中禁用不安全的3DES密码套件,并采用AES-GCM等更安全的加密方式,以彻底修复此TLS/SSL漏洞。

weixin_29230649的博客 585

PID温控实验平台搭建(二)——PID进阶知识介绍及源码分享

最近,我突发奇想去翻阅了一些我本科期间所做的一些小项目,发现都挺有意思的!希望通过我的讲解文章可以帮助你们少走一些弯路!今天,我要分享的是一个PID温控实验平台的搭建,这是一个系列文章,手把手地教你学习和认识PID算法,了解这种算法在温度控制中的应用。由于我知识有限,如果出现一些错误,希望大家可以帮助我指出来,我们一起学习进步!!!

qq_35953617的博客 8049

C sharp out关键字

为什么80%的码农都做不了架构师?>>> ...

weixin_34146805的博客 754

containerd镜像加速配置全解析:从host.toml到config.toml的演进与实践

本文全面解析了containerd镜像加速的配置方法,重点对比了传统的config.toml集中式配置与现代的host.toml模块化配置的演进与优劣。文章通过实战演示,详细指导如何为docker.io、registry.k8s.io等常见仓库配置host.toml加速,并提供了生产环境下的最佳实践、故障排查与性能优化建议,帮助用户显著提升镜像拉取效率与系统稳定性。

jenkins8butler的博客 698

关于Ref和Out的区别,附上小例子

[c-sharp] view plaincopyprint? class Program      {          //使用out后必须对变量赋值              public void TestOut(out int x, out int y)          {              x = 1;              y = 2;         

lovejesuslove的博客 467

【2026年华为暑期实习-非AI方向(通软&嵌软&测试&算法&数据科学)- 7月15日-第二题- 手机多载波冲突选择】(题目+思路+Java&C++&Python解析+在线测试)

摘要 本文提出了一种解决手机基站载波选择问题的回溯算法。给定N个载波,每个载波具有带宽和所属频段,要求选择最多K个载波,满足:1) 不选择同一频段的多个载波;2) 不选择冲突频段的载波;3) 总带宽最大化。算法通过预处理冲突关系,使用位掩码优化冲突检查,按编号顺序回溯枚举所有可能组合。当找到更大带宽或相同带宽但字典序更小的组合时更新答案。该方法在N≤25和K≤8的约束下高效可行,并通过样例验证了正确性。输出为最大总带宽和对应的最优载波编号序列。

m0_73659489的博客 71

MAX30102心率血氧传感器原理图设计,已量产(e-Health传感器)

在最近的便携健康监测设备项目中,我们采用了集成算法的 MAX30102 心率血氧模块 —— 这类带内置 MCU 算法的传感器能直接输出心率 / 血氧数值,大幅降低了主控资源占用。但硬件电路的稳定性直接决定了 PPG 信号的采集精度,下面结合实际项目里的原理图,拆解下这个模块的设计细节。

不脱发的程序猿 1278

CSharp输出型参数学习

1.一个函数可能产生多个有价值的计算结果,但是使用return语句只能返回一个数据。如果返回多个有用的数据(1)引用参数ref能改变实参的值,自然能将计算结果反馈给主调函数。(2)使用输出型参数out返回有用的计算结果。ref 与 out的区别:ref型参数传入函数前必须赋值out型参数传入函数前不需要赋值,即便赋了值也会被忽略。所以out型参数只能用来从函数...

weixin_34268753的博客 566

在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案

本文主要介绍了在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 原因分析 3. 解决方案

weixin_43178406的博客 10万+

C#参数进阶:out、ref与params实战

/ 出现十个随机数都是相同的 for执行的速度比较快, 导致种子是一样的 产生的随机数也是一样的。3, 创建对象 : 类名 + 自己起的对象名 = new+ 类名(), new 创建新的,申请内存空间去存储对象, 类名(): 构造函数创建对象为对象进行初始化作用,方法名和类名是一样的。Console.WriteLine(Hd("余伟 ","张三 ","李四","麻子 "," 王二"));

2301_81657759的博客 1162

深圳路网相关shp数据

深圳相关的shp格式数据,包括主要公路、小路、铁路、区划分、街道划分、河流等。这些是2019年做毕业设计的时候用到的

IEC 60068-2-11:2021 环境试验- 第2-11部分:Tests- Test Ka:盐雾 - 完整英文版(35页)

完整英文电子版 IEC 60068-2-11:2021 Environmental testing - Part 2-11:Tests - Test Ka:Salt mist (环境试验 - Part 2-11:Tests - Test Ka:盐雾)。IEC 60068-2-11:2021 规定了评估电工产品组件、设备和材料在盐雾环境中的耐腐蚀性的测试方法。 其目的是验证金属材料在暴露于盐雾时是否保持相对质量,无论是否具有防腐蚀保护。本测试方法可用于评估用于保护金属免受腐蚀的涂层的质量和均匀性。 它特别适用于检测某些金属、有机、阳极氧化物和转化涂层中的不连续性,例如孔隙和其他缺陷。

【C#】C# 虚方法和抽象方法的区别,重写和重载的区别,参数修饰符(ref、out、in、params)

在继承抽象类时,如果抽象类中含有(一个或一个以上的)抽象方法,由于抽象方法在基类中只有方法并没有方法体,可以理解为当派生类继承基类中的抽象方法时,必须去补充基类中抽象方法缺乏的方法体(即重写抽象方法)速记:因为在继承含有虚方法的类时,虚方法已经在基类中写过方法体,可以理解为基类中已经写过一次的方法在派生类中可以但是没有必要去重写虚方法(仅有需要的情况下再去重写)方法内部是只读的(即在方法内部是不能够对其进行修改的)必须在方法内部进行修改并且会影响到原数值。基类中已定义的虚方法或抽象方法的新实现。

冰茶的博客 1939

中国统计NJ数据-地区生产总值(2024年).xlsx

中国统计NJ数据-地区生产总值(2024年).xlsx

C# 基础语法核心知识点:out/ref 参数、params 可变参数、随机数与作用域

本文主要介绍了C#中的四种重要参数特性:1. out参数与ref参数的区别:out参数允许方法返回多个值,调用前可不初始化;ref参数要求调用前必须初始化。2. params可变参数的使用:用于接收不定数量的同类型参数,必须是方法最后一个参数。3. 随机数生成:介绍了Random类和更安全的RNGCryptoServiceProvider类的使用方式。4. 作用域规则:详细说明了全局变量、局部变量以及嵌套作用域的访问规则,强调了大括号{}界定作用域范围的重要性。这些特性在实际编程中具有重要应用价值。

qxzln的博客 968

基于OneNET和树莓派4B的智能家居系统的研究.pdf

基于OneNET和树莓派4B的智能家居系统的研究.pdf

C#类的基础介绍

类(class)是一种数据结构,它可以包含数据成员(变量和常量)、函数成员(方法、属性、事件、索引器、运算符、构造函数和析构函数)和嵌套类型。类支持继承,继承是一种使子类可以对基类进行扩展和专用化的机制。

weixin_51263756的博客 1961

C#部分基础知识整理(类)

C#部分基础知识整理(类) 1.方法

Kevin_Sun777的博客 282

学点C# 3 方法 & 不确定参数 & 属性 & Struct & 数组

<br />方法在 C# 中,Main 的首字母大写,而 Java 使用小写的 main。在 C# 中,若要通过引用传递值类型,需要指定关键字 ref 或 out。这两个关键字的区别在于参数初始化的不同。ref 参数必须在使用前进行初始化,而 out 参数不必在传递前进行显式初始化,并且它将忽略以前的任何值。ref 和 out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。但是,如果一个方法采用 ref 或

xingguo822的专栏 1145

C#面向对象程序设计学习笔记(二)

4)方法,方法是用来定义类可执行的操作,本质上讲,方法就是和类相关联的动作,方法在类或结构中声明,声明时需要指定访问级别、返回值、方法名称及方法参数,其格式如下: 修饰符 返回值类型 方法名(参数列表) { //方法的具体实现; } 其修饰符可以是private、public、protected、internal 4个中的任意一个;返回值类型,可以是任何类型,如果不需要...

weixin_45553275的博客 251

C#教程2

常量 枚举(复杂的数据类型) 没什么要有枚举? 结构(复杂的数据类型) 数组(结构一次可以存储多个不同类型的变量,而数组可以一次存储多个相同类型的变量) 方法(函数) ...

steve1988717的博客 163

C# 命名空间 类 字段,属性,方法,变量, 参数

命名空间 类 字段 方法外的变量,一般为私有 属性 保护字段,set为写,get为读, value为内置隐藏变量 方法(参数) 变量 在方法内 参数在方法间传递 实际参数传递 方法(var 参数) 引用参数传递 方法(ref var 参数),调用时也要加(ref 参数),等同于参数的地址(指针) 可变参数传递 方法(params var 参数),调用时不需要再写(params) ...

fwsylin的博客 862

【c#基础】5.类、对象、方法

类是对象的模板/蓝图,是具有相同属性、字段和方法的一组对象的集合。通俗理解:类就像“人类”—— 定义了人类共有的特征(年龄、性别)和行为(吃喝拉撒),是一个抽象的模板。// 语法格式:修饰符 class 类名// 修饰符:常用public、internal(默认internal)// 类名:必须遵循大驼峰命名法则(首字母大写,后续每个单词首字母也大写)public class 类名// 类的内部:定义字段、属性、方法// 创建对象: 类名 对象名 = new 类名()

qq_56230359的博客 442

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

C#函数重载

qq_44965626的博客 446

C#的基础笔记

​ 我们可以去控制属性的get和set,如果只是在属性中设置了get、那么我可以对这个属性进行读取,但是无法进行修改,相反来说如果只是设置set那么我们可以对这个属性进行修改,但是无法读取修改后的或者是修改前的值。​ this总所周知直接指向,而base也是专门给继承的子类的,base只能去访问父类的数据成员。感觉虚方法相当于就是方法重写,通常使用的情况是父类的方法不适用于子类方法的时候才会去使用。重构的关键点就在于,方法的名是可以相同,但是它们之间的参数要不一样。

IDcen的博客 574

C#从入门到精通(第四版)学习记录-- 第8、9章

C#从入门到精通(第四版)学习记录-- 第8、9章 方法、结构和类

qq_34552942的博客 206
下一篇: c#中DateTime函数的各种显示效果
chwei_cson
博客等级 码龄15年 62粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值