当前位置: 首页 > 编程日记 > 正文

ref和out 传递参数(C#)

1.参数传递默认都是传递栈空间里面存储的内容

2.如果添加了ref那么传递的都是栈空间地址,而不再是栈空间里面的内容

3.如果添加了out,那么传递的也是栈空间的地址

 1  //写一个方法计算一个int类型数组中每个元素的总和以及最大值和最小值
 2         /// <summary>
 3         /// 
 4         /// </summary>
 5         /// <param name="intArray"></param>
 6         /// <returns></returns>
 7         static void GatValue(int[] intArray, ref int sum, ref int max, ref int min)
 8         {
 9             
10             sum = 0;
11             max = intArray[0];
12             min = intArray[0];
13             for (int i = 0; i < intArray.Length; i++)
14             { 
15                 //总和
16                 sum += intArray[i];
17 
18                 //最大值
19                 if (max < intArray[i])
20                 {
21                     max = intArray[i];
22                 }
23 
24                 //最小值
25                 if (min > intArray[i])
26                 {
27                     min = intArray[i];
28                 }
29             }
30         }
View Code

1  static void Main(string[] args)
2         {   
3             int[] intArray={1,2,3,4,5,6,7,8,9,10};
4             int sum = 0, max = 0, min = 0;
5             //int sum = 0, max = 0, min;     //如果min变量在使用的时候,没有赋值,在使用ref关键字传递参数的时候,就会报错,错误消息:“使用了未赋值的局部变量”
6             GatValue(intArray, ref sum,ref max,ref min);
7             Console.Write(sum+" "+max+" "+min);
8             Console.ReadKey();
9         }
Mian函数

 1  static void Main(string[] args)
 2         {   
 3             int[] intArray={1,2,3,4,5,6,7,8,9,10};
 4            // int sum = 0, max = 0, min = 0;
 5             int sum = 0, max = 0, min;
 6             GatValue(intArray, ref sum,ref max,out min);
 7             Console.Write(sum+" "+max+" "+min);
 8             Console.ReadKey();
 9         }
10 
11 
12 
13   static void GatValue(int[] intArray, ref int sum, ref int max, out int min)
14         {
15             
16             sum = 0;
17             max = intArray[0];
18             min = intArray[0];
19             for (int i = 0; i < intArray.Length; i++)
20             { 
21                 //总和
22                 sum += intArray[i];
23 
24                 //最大值
25                 if (max < intArray[i])
26                 {
27                     max = intArray[i];
28                 }
29 
30                 //最小值
31                 if (min > intArray[i])
32                 {
33                     min = intArray[i];
34                 }
35             }
36         }
min变量out传递参数

 1   static void GatValue(int[] intArray, ref int sum, ref int max, out int min)
 2         {
 3             //这里要返回三个变量的值,只能是,通过返回值调用了
 4             sum = 0;
 5             max = intArray[0];
 6            // min = intArray[0];
 7             for (int i = 0; i < intArray.Length; i++)
 8             { 
 9                 //总和
10                 sum += intArray[i];
11 
12                 //最大值
13                 if (max < intArray[i])
14                 {
15                     max = intArray[i];
16                 }
17 
18                 ////最小值
19                 //if (min > intArray[i])
20                 //{
21                 //    min = intArray[i];
22                 //}
23             }
24         }
25 
26 
27 
28   static void Main(string[] args)
29         {   
30             int[] intArray={1,2,3,4,5,6,7,8,9,10};
31            // int sum = 0, max = 0, min = 0;
32             int sum = 0, max = 0, min;
33             GatValue(intArray, ref sum,ref max,out min);
34             Console.Write(sum+" "+max+" "+min);
35             Console.ReadKey();
36         }
错误的例子,out参数在使用的时候,必须在方法体内,为变量赋值

这里第四个代码段,里面,使用了out参数传递的变量min,在方法体内没有被赋值,运行的时候会报错:“ 控制离开当前方法之前必须对 out 参数“min”赋值 “

区别:ref传递的参数必须先赋值再使用;

        out可以赋值也可以不赋值,但是在方法体内必须重新赋值。

相关文章:

Qt实现主界面圆角化

添加头文件&#xff1a; #include <QPainter> #include <QBitmap>在构造函数里面添加如下代码即可实现&#xff1a; this->setWindowFlags(Qt::FramelessWindowHint);//新建无边框窗口,可以把边框完全去掉QBitmap bmp(this->size());bmp.fill();QPainter p(…

终极Git课程——在虚幻引擎中的应用 The Ultimate Git Course – with Applications in Unreal Engine

了解Git和GitHub、虚幻引擎C项目的版本控制等等&#xff01; 你会学到: Git是如何工作的 如何从命令行使用Git 使用GitHub、GitHub桌面应用程序、Visual Studio中的Git工具和VS代码等Git工具 在虚幻引擎5和虚幻引擎4中使用Git跟踪虚幻引擎项目 在Visual Studio和Visual Studio…

stm32双向可控硅调压程序_单向可控硅和双向可控硅的测量与模块测试

可控硅&#xff0c;是可控硅整流元件的简称&#xff0c;是一种具有三个PN结的四层结构的大功率半导体器件&#xff0c;亦称为晶闸管。具有体积小、结构相对简单、功能强等特点&#xff0c;是比较常用的半导体器件之一。可控硅导通条件&#xff1a;一是可控硅阳极与阴极间必须加…

shellinabox安装

Shell In A Box&#xff08;发音是shellinabox&#xff09;是一款基于Web的终端模仿器&#xff0c;由Markus Gutschke开辟而成。它有内置的Web办事器&#xff0c;在指定的端口上作为一个基于Web的SSH客户端而运行&#xff0c;可认为你供给一个Web终端模仿器&#xff0c;以便应用…

Spring JdbcTemplate的queryForList(String sql , ClassT elementType)易错使用--转载

原文地址&#xff1a; http://blog.csdn.net/will_awoke/article/details/12617383 一直用ORM&#xff0c;今天用JdbcTemplate再次抑郁了一次。 首先看下这个方法&#xff1a; 乍一看&#xff0c;我想传个泛型T&#xff08;实际代码执行中&#xff0c;这个T可以是我自定义的一个…

QGC添加显示多架无人机飞行轨迹

在FlightDisplayViewMap.qml文件中找到如下部分&#xff1a;&#xff08;上面是显示单架无人机轨迹&#xff0c;已注释&#xff0c;下面是显示多架轨迹&#xff09; /*// Add trajectory lines to the map 增加轨迹线MapPolyline {id: trajectoryPolylineline.width: 3…

UE中的自动化学习课程

使用蓝图、C和Python 你会学到什么 Becoming an Unreal Automation Expert 通过在虚幻中自动化繁琐重复的任务来提高您的工作效率 了解Python、C和Blutilities如何在虚幻中工作。他们之间是如何联系的&#xff0c;对彼此有什么好处&#xff1f; 通过学习自动化&#xff0c;大幅…

怎么让电脑运行速度变快_分享几种电脑运行速度慢的解决方法_windows7教程

如果电脑操作系统使用时间久了&#xff0c;我们的电脑开机速度就会变的越来越慢&#xff0c;会经常出现卡顿等&#xff0c;影响到我们的工作效率等等。那如果遇到电脑运行速度满怎么解决呢&#xff1f;小编就跟大家聊聊电脑运行速度慢的解决方法。1. 卸载清理软件与垃圾。多用户…

《机电传动控制》学习笔记03-1

转载于:https://www.cnblogs.com/xiaobaicai05/p/5267069.html

5月“.公司”域名注册总量TOP15:西部数码第四

IDC评述网&#xff08;idcps.com&#xff09;05月18日报道&#xff1a;根据ntldstats.com发布的最新数据显示&#xff0c;截止至5月15日17:00&#xff0c;在国内外“.公司”域名总量十五强域名商中&#xff0c;仅西部数码、第一商务、耐思尼克与时代互联的市场份额实现上涨&…

个人博客打不开时检查下github.com的ip地址是否更改/修改博客内容字体、颜色及大小

1.修改ip解析 1.WinR 输入CMD 2.打开终端输入 ping github.com查看github.com的IP地址&#xff0c;将域名解析里面的ip替换为新的ip即可&#xff01; 替换之后就不会出现如下界面&#xff1a; 完成以上步骤以后即可出现正确界面&#xff1a; 2.修改CSDN博客字体、颜色及大小…

UE:增强现实AR可视化基本概念

Unreal: AR Visualization 01 Basic Concepts 通过Epic Games探索虚幻引擎&#xff0c;并通过一个真实世界的项目获得增强现实(AR)基础知识的概述。在本课程中&#xff0c;这是三部分系列的第一部分&#xff0c;讲师Emmanuel Henri介绍了增强现实的定义和AR项目的要求&#xff…

Spark源码分析之七:Task运行(一)

在Task调度相关的两篇文章《Spark源码分析之五&#xff1a;Task调度&#xff08;一&#xff09;》与《Spark源码分析之六&#xff1a;Task调度&#xff08;二&#xff09;》中&#xff0c;我们大致了解了Task调度相关的主要逻辑&#xff0c;并且在Task调度逻辑的最后&#xff0…

solidworks画白色金属光泽_美人的共通点就是卧蚕,卧蚕真的太重要了,没有也要画出来...

在美学上&#xff0c;卧蚕加上双眼皮最能呈现「电眼」风采。美人们的共通点就是「卧蚕」&#xff0c;它主宰着眼神的命运&#xff0c;不仅能提升下眼睑魅力&#xff0c;让眼神看起来灵动温和&#xff0c;也能让眼睛放大&#xff0c;还提升你的好人缘呢。有木有发现&#xff0c;…

ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote...

ssh报错&#xff1a; ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. 在终端输入&#xff1a;$ ssh -T gitgithub.com 打开下图路径下查看是否有该文件&#xff1a; 没有的话就添加一个文件命名&#xff1a…

虚幻引擎4:打造街机经典游戏学习教程 Unreal Engine 4: Create an Arcade Classic

比如“堡垒之夜&#xff1f;”掌握用于构建它的工具&#xff0c;因为我们使用虚幻引擎4重新创建了一个街机经典 描述 在这个游戏设计课程中&#xff0c;我将一步一步地指导你使用虚幻引擎4重新创建一个街机经典:首要免费下载游戏引擎&#xff01;(和制造轰动一时的《堡垒之夜》…

MySQL基本了解与使用

MySQL的相关概念介绍 MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格: 表头(header): 每一列的名称;列(row): 具有相同数据类型的数…

proxmoxve打造云桌面_AIO攻略 | 桌面云是如何解决外设问题的?

如何有效牢固地保护敏感数据&#xff1f;如何实现通过多元化的终端设备接入企业办公桌面&#xff0c;且高效安全、不限地点&#xff1f;如何实现桌面集中维护、统一管理&#xff0c;同时打造云上轻办公空间呢&#xff1f;这恐怕是很多企业都在思考的问题。答案非桌面云莫属。桌…

8位无符号和8位有符号转化为更高字节类型的问题

main() {unsigned char uch0xff; //数值为255 char ch0xff; //数值为-1int i0; iiuch;printf("%x\n",i);i0;iich;printf("%x\n",i);} 运行结果为&#xff1a; ff ffffffff 解释&#xff…

C/C++基础知识

C/C知识积累 知识积累 1.string是C的标准库&#xff0c;是不能作为变量名的&#xff1b; 2.strcpy(str1,str2)是将str2拷贝给str1&#xff0c;并返回str1&#xff1b; 注&#xff1a;若str2比str1大&#xff0c;将导致数据溢出&#xff0c;导致错误&#xff1b; char str “…

面向完全初学者的Unity和C#游戏开发学习教程

了解如何通过使用Unity游戏引擎和C#制作BomberMan风格的3D游戏来制作您的第一款视频游戏 你会学到: 使用Unity 2021学习3D游戏开发 通过制作你的第一个3D游戏来学习C#编程语言的基础知识 从头到尾制作你的第一个电子游戏 超过40个视频作业&#xff0c;测试你的学习技能&#x…

java transient关键字_小伙子,你真的搞懂 transient 关键字了吗?

先解释下什么是序列化我们的对象并不只是存在内存中&#xff0c;还需要传输网络&#xff0c;或者保存起来下次再加载出来用&#xff0c;所以需要Java序列化技术。Java序列化技术正是将对象转变成一串由二进制字节组成的数组&#xff0c;可以通过将二进制数据保存到磁盘或者传输…

DEDECMS后台上传banner图控制图片轮播

将图片轮播做到后台控制&#xff0c;无论是dedecms还是其他的程序都是一样的重要&#xff0c;方便客户自己调试&#xff0c;不然动不动就拿FTP开刷&#xff0c;一个是操作不方便&#xff0c;增加了使用上的难度&#xff0c;另外也有一定的风险&#xff0c;很可能由于操作生疏&a…

C/C++刷题知识点总结

纠正一些知识性偏见、欠缺&#xff1a; 变量占用内存大小&#xff0c;是用sizeof&#xff08;&#xff09;计算出来那个&#xff0c;定义字符型数据时后面不添加’\0‘的&#xff0c;但是在字符串数组后面是添加的&#xff1b;例如char a[]{a,b,c};char b[]{"abc"};两…

虚幻引擎5:从零开始的蓝图近战AI学习教程

Unreal Engine 5: Blueprint Melee Combat AI from Scratch 创建一个动作游戏&#xff0c;以打击2个独特的人工智能&#xff0c;包括一个火蔓延龙&#xff01; 你会学到什么 学习使用虚幻引擎5的技巧 如何通过蓝图设计和创建人工智能 学会创造两种独特的人工智能 学会在战斗中…

git add 文件夹_Git的下载安装以及基本操作

二&#xff0c;配置git&#xff1a;用户名和邮箱在桌面右键-【Git Bash Here】输入命令&#xff1a;git config --global user.name "lijiang"git config --global user.email "2906718132qq.com"查看用户名和邮箱是否配置成功&#xff0c;去这个路径&…

scapy windows install

最近有点扫描网络的需求&#xff0c;都说scapy好&#xff0c;但是安装是个事&#xff08;当然指的是windows安装&#xff09;有个scapy3k&#xff0c;支持python3&#xff0c;可惜需要powershell&#xff0c;也就是说windows xp是没有戏了。 网上说最好python2.6&#xff0c;但…

Enda 的 2015 下半年读书计划

2015下半年的读书计划 php 方面 《PHP设计模式》 《PHP核心技术与最佳实践》 《learning php设计模式》 《深入php》 Mysql 方面 《高性能MySQL》 《深入理解mysql核心技术》 其他 《天才在左疯子在右》 大家有什么好书吗&#xff1f;推荐推荐嘛&#xff5e;&#xff5e;

Qt嵌入外部EXE程序,并显示在主界面中!

一、获取程序句柄以及类 打开Visual Studio 进行查询 二、QT调用程序 H文件 #ifndef VISUAL_H #define VISUAL_H#include <QWidget> #include <QProcess> #include<Windows.h> #include<QWindow>QT_BEGIN_NAMESPACE namespace Ui { class Vi…

UE虚幻引擎:建筑可视化学习教程 Unreal Engine : Architectural Visualization

使用这套4合1虚幻引擎课程包提高您的建筑可视化技能 你会学到什么 准备要导出的Revit模型 使用虚幻数据史密斯产品查看器工具 创造UE的材料 交换材料 点亮你的模型 添加交互 打包内容以便在虚拟现实和移动设备上分发 迁移材料包 批量更换材料 静态和动态照明 光照图分析、校正…