C#中out和ref使用
1、out必须在方法中为其赋值,在调用的时候必须在变量的前面加上out关键字,侧重输出。
2、ref修饰方法的参数,在调用的时候必须在变量的前面加上ref关键字,可以修改其值也可以不修改,侧重修改。
3、out和ref只能传递变量不能传常量,传递的时候不是传递变量的值,而是传变量的地址。
3、out在传递之前可以不赋初始值,因为在方法里面肯定会为out赋值,ref在传递之前必须要有值,因为在方法中有可能会用到参数的值。
static void TestOut(out int i)
{
i=;//out中一定要对变量赋值
}
static void TestRef(ref int i)
{
i+=;//ref中可以对变量赋值也可以不赋值
}
staitc void Main(string[] args)
{
int i=;
TestOut(out i);
//TestOut(out 12);这样就报错,只能传变量不能传常量
Console.WriteLine(i);
int[] arr={,,,,};
int min=;
int max=;
GetMaxAndMin(arr,out max,out min);
Console.WriteLine(min+":"+max);
int num;
//TestRef(ref num);//这样就有可能报错,因为方法中可能会用到参数的值,而在ref里面没有对变量赋值。
//TestOut(out num);//这样不会报错,因为out里面一定会对变量赋值。
//Console.WriteLine(num);
}
static void GetMaxAndMin(int[] arr,out int max,out int min)
{
//排序 Array.Sort(arr);
//冒泡排序
for(int i=;i<arr.Length-;i++)
{
for(int j=;j<arr.Length--i;j++)
{
if(arr[j]>arr[j+])
{
int temp=arr[j];
arr[j]=arr[j+];
arr[j+]=temp;
}
}
}
max=arr[arr.Length-];
min=arr[];
}
附图(理解out和ref只是传递的地址而不是值):

注:以上内容均属软谋原创,转载请注明出处。
C#中out和ref使用的更多相关文章
- react native中state和ref的使用
react native中state和ref的使用 因props是只读的,页面中需要交互的情况我们就需要用到state. 一.如何使用state 1:初始化state 第一种方式: construct ...
- .NET框架- in ,out, ref , paras使用的代码总结 C#中in,out,ref的作用 C#需知--长度可变参数--Params C#中的 具名参数 和 可选参数 DEMO
C#.net 提供的4个关键字,in,out,ref,paras开发中会经常用到,那么它们如何使用呢? 又有什么区别? 1 in in只用在委托和接口中: 例子: 1 2 3 4 5 6 7 8 9 ...
- [转] C#中out和ref之间的区别
gskcc 的原文地址 C#中out和ref之间的区别 首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个 ...
- C#中out和ref之间的区别【转】
首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所 ...
- C#中out和ref之间的区别
首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:rel可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所 ...
- C#中引用(ref关键字)参数
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 函数的参 ...
- C#中in,out,ref,params的作用和区别
ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键 ...
- Java中替代C# ref/out 关键字方案:
刚学习Java不久,今天遇到一个问题,需要在方法中修改传入的对象的值,确切的说是需要使用一个方法,创建一个对象,并把其引用返回,熟悉C#的我的第一反应就是C#中的ref/out关键字,结果发现Java ...
- C# 中out,ref,params参数的使用
C#中有三个高级参数,分别是out,ref,params: 1.out参数 方法使用return 只能返回一个值(一个数值或一个指针值),out参数可以帮助我们在一个方法中返回多个值,不限类型. ...
随机推荐
- Log4net创建日志及简单扩展
转:http://blog.csdn.net/CHENFEIYANG2009/article/details/5397342 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log ...
- 设置oracle11g空表exp导出
1.Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出. 2.设置deferred_segment_creation 参数为FALSE后,无论是 ...
- Oracle 新增表空间文件
ALTER TABLESPACE users ADD DATAFILE 'D:/oracle/oradata/orcl/users.dbf' SIZE 500M AUTOEXTEND ON NEXT ...
- C#中属性简写原理
1. 属性简写时不能只有get或者set 原因: 如果只有get,那么没有办法给其赋值,所有也就没法get到值: 如果只有set,没有意义,因为根本没法获取到这个值.
- Codeforces182D - Common Divisors(KMP)
题目大意 如果把字符串a重复m次可以得到字符串b,那么我们称字符串a为字符串b的一个因子,现在给定两个字符串S1和S2,求它们的公共因子个数 题解 如果它们有公共因子,那么显然它们的最小公共因子肯定是 ...
- Codeforces294B - Shaass and Bookshelf(贪心)
题目大意 给你N本书,每本书由一个厚度t[i](1或者2),宽度w[i],高度都是一样,把一些书竖着放,然后一些书横着放在同一层,就像下图那样放: 问你把所有的书放好之后竖着的书的总厚度是多少? 题解 ...
- CSS 中常用的选择器(选择符)
一.标签选择器:直接将HTML标签(Tag)作为选择器,可以是p.h1.dl.strong等HTML标签.如: p { font:12px;}em { color:blue;}dl { float:l ...
- 教程-Delphi资源文件(全面分析于使用)
Delphi资源文件(全面分析之位图.光标.图标.AVI.JPEG.Wave) 几乎每个Windows应用程序都使用图标.图片.光标等资源.资源是程序的一部分,但是它是不可执行代码.下面我们就详细 ...
- EF搜索数据自动将表名变复数问题
原因这个是自己生成的需要在model加Table 其他博主写了aweier2011
- 按需讲解之Supervisor
Supervisor是一个进程监控程序. 满足的需求是:我现在有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了 ...