`
java-mans
  • 浏览: 11387844 次
文章分类
社区版块
存档分类
最新评论

C#方法中使用ref和out参数

 
阅读更多

一、创建ref参数
在使用参数时,将参数传递给方法使用,而方法中对此值的任何改变并不能影响方法外部的变量。下面一个例子,控制台输出4,并没有对变量进行增量。例如:
class ReforOut
{
static void Geti(int a)
{
a++;
}
public static void Main(string[] args)
{
int i=4;
Geti(i);
Console.WriteLine("i={0}",i);
Console.ReadLine();
}
}
输出结果:形式参数i只是传递值,没有传递真正的变量i,所以变量i本身的值并没有改变。
但是,如果,我想通过Geti方法,去改变Main函数中变量i 的值,那么我们可以想象,如果变量i本身被传递到方法中,那么就可以完成变量i值被改变:这里要靠ref关键字来实现:
class ReforOut
{
static void Geti(ref int a)
{
a++;
}
public static void Main(string[] args)
{
int i=4;
Geti(ref i);
Console.WriteLine("i={0}",i);
Console.ReadLine();
}
}
输出结果:变量i本身加1.
二、创建out参数
Out参数与ref参数的作用是一样的,都是为了传递值变量的地址,是变量本身被方法改变。但所不同的是,ref参数要求变量在方法外初始化,而out参数则要求变量在方法内初始化。
将上面的例子改写成out参数:
class ReforOut
{
static void Geti(out int a)
{
a = 4;
a++;
}
public static void Main(string[] args)
{
int i;
Geti(out i);
Console.WriteLine("i={0}",i);
Console.ReadLine();
}
}
输出结果:i=5

分享到:
评论

相关推荐

    C#中ref,out和params有什么区别

    C#中ref,out和params有什么区别 out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out ...

    C#方法中参数ref和out详解

    主要为大家详细介绍了C#方法中参数ref和out的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    C# ref和out的区别

    在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值...若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。

    解析C#中的ref和out参数

    本文将通过实例和说明,给大家详细讲解C#中的ref和out参数。 代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace RefAndOut{ class Program { static void...

    C#中的参数传递 - ref, out比较

    概括了c#中涉及到的函数/方法的参数传递方式。

    C#中out与ref的区别实例解析

    但Out传递到方法体时,参数会清空,这意味着在方法体内使用Out参数前必须赋值。 而Ref传递到方法体时,其参数也是一起被传递进来,所以作为Ref参数传递,方法体中可以不对其参数赋值。 二、实例代码如下: class ...

    C#中ref和out的区别浅析

    在C#中通过使用方法来获取返回值时,通常只能得到一个返回值。因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢? MSDN:  ref 关键字使参数按引用传递。其效果是,当控制权...

    C#中out参数、ref参数与值参数的用法及区别

    本文想介绍下详细介绍下out参数,ref参数以及一般值参数。 值参数 在使用参数时,把一个值传递给函数使用的一个变量。在函数中对此变量的任何修改都不影响函数调用中指定的参数。如下面的函数,是使函数是使传递...

    c#基础系列之ref和out的深入理解

    本文中说的Ref和Out都是引用传递,Ref的重点是把值传给调用方法,Out则是得到调用方法的值,类似于有返回类型的方法返回的值; 在使用两者时一定要注意一下两点,否则编译出现错误 a) ref 变量使用前要先声明同时要...

    C#中ref和out参数使用时需要注意的问题

    此外我们还有其他向方法传递参数的形式,引用(ref)和输出(out)。  有时,我们需要改变原来变量中的值,这时,我们可以向方法传递变量的引用,而不是变量的值。引用是一个变量,他可以访问原来变量的值,修改引用...

    C#泛型参数多线程与复杂参数多线程2

    最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便...复杂参数的多线程,如果方法带有参数ref或out就不能使用带参数的多线程。

    .NET/C#利用反射调用含ref或out参数的方法示例代码

    主要给大家介绍了关于.NET/C#利用反射调用含ref或out参数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    详解C#中的out和ref

    要想充分理解C# out和ref,必须先明确如下两个概念(对值类型与引用类型掌握比较好的,可以跳过“一、明确两个基本概念”) 一、明确两个基本概念 值类型:  定义:通过值的方式来传递,即实际参数向形式参数传递...

    C#泛型参数多线程与复杂参数多线程

    最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便...复杂参数的多线程,如果方法带有参数ref或out就不能使用带参数的多线程。

    c#方法中调用参数的值传递方式和引用传递方式以及ref与out的区别深入解析

    以下是对c#方法中调用参数的值传递方式和引用传递方式,以及ref与out的区进行了详细的分析介绍,需要的朋友可以过来参考下

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    · 使用CLR寄宿、AppDomain、程序集加载、反射和C#的dynamic类型来构造具有动态扩展能力的应用程序 本书作者作者Jeffrey Richter,.NET和Windows编程领域当之无愧的大师和权威,以著述清楚明了,行文流水,言简意赅...

    c sharp——方法和参数.txt

    方法的命名规则、参数ref、out的介绍。切换任务和切换标签的快简介,指定路径下的文件和文件夹实用类

Global site tag (gtag.js) - Google Analytics