C# 使用ref和out关键字

使用ref关键字,可以使参数按引用传递。当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。
若要使用ref关键字进行参数传递,则方法定义和调用方法都必须显示地使用ref关键字,而且使用ref关键字传递的参数必须最先进行初始化。
使用out关键字的方法与使用ref关键字的方法类似,同样会导致参数通过引用来传递。不同之处在于,使用out关键字传递的参数并不需要最先进行初始化,但需要在方法返回之前进行赋值。
若要使用out关键字传递参数,方法定义和调用方法都必须显示地使用out关键字。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void refMethod(ref string s)
{
s = "wangyuanfeng";
}

static void outMethod(out int i,out string str1,out string str2)
{
i = 44;
str1 = "I‘ve been returned";
str2 = null;
}

static void Main(string[] args)
{
string str = "old";
int value = new int();
string str1 = "old1";
string str2 = "old2";

Console.WriteLine("use ref:");
Console.WriteLine("refMethod()before:\n str = {0}", str);
refMethod(ref str);
Console.WriteLine("refMethod() after :\n str = {0}", str);

Console.WriteLine("use out:");
Console.WriteLine("outMethod() before:\n nvalue = {0};nstr1 = {1},nstr2 = {2}", value, str1, str2);
outMethod(out value, out str1, out str2);
Console.WriteLine("outMethod() after:\n nvalue = {0},nstr1 = {1},nstr2 = {2}", value, str1, str2);

Console.Read();
}
}
}

原文链接:http://www.douban.com/note/273675561/

时间: 2024-08-07 12:24:15

C# 使用ref和out关键字的相关文章

关于c#中”ref”和”out”关键字的一些理解

一. 综述(本文内容大部分来自网络,经本人整理而成,仅供学习参考,不免理解错误,欢迎批评指正) 在c#中,方法的参数传递有四种类型: (1) 传值参数(by value) 传值参数无需额外的修饰符.传值参数在方法调用过程中,如果改变了参数的值,那么传入方法的参数在方法调用完成以后并不因此而改变,而是保持原来传入的值.实际 上,传值参数传递的是调用参数的一份拷贝,因此在调用方法的过程中,即使改变了参数的值,也不会影响到实际传入的参数值,详见例程: (2) 传址参数(by reference) 传址

C#方法参数传递-同时使用ref和out关键字

在方法参数传递中,可以同时使用ref和out关键字,但是要注意ref和out参数传递的不同. using System;class Program{static void Main(){    Program obj = new Program();    int score = 55; //声明原来分数    int refscore, outscore; //声明两个变量    obj.ChangeScore(score, ref refscore, out outscore);    Co

REF和OUT关键字的介绍

声明:本文是本人最初写在51CTO上的一篇学习笔记,原文地址为:http://kestrelsaga.blog.51cto.com/3015222/717906 ref与out的比较: ref与out关键字都是使参数通过引用来传递的,不同的是ref 要求变量必须在传递之前进行初始化,而out 的参数在传递之前不需要显式初始化. 在使用ref或out参数,方法定义和调用方法都必须显式使用ref或out关键字,如: 例1(out): 01.class OutExample 02.{ 03. stat

C# ref与out关键字解析

简介:ref和out是C#开发中经常使用的关键字,所以作为一个.NET开发,必须知道如何使用这两个关键字. 1.相同点 ref和out都是按地址传递,使用后都将改变原来参数的数值. 2.ref关键字 (1).使用ref关键字的注意点: i.方法定义和调用方法都必须显式使用 ref 关键字 ii.传递到 ref 参数的参数必须初始化,否则程序会报错 iii.通过ref的这个特性,一定程度上解决了C#中的函数只能有一个返回值的问题 (2).代码示例: using System; using Syst

ref、out 关键字

class ParameterTest { static void Main(string[] args) { int i = 0; int[] ints = { 0, 1, 2, 4, 8 }; Console.WriteLine("i = " + i); Console.WriteLine("ints[0] = " + ints[0]); SomeFunction(ints,i); Console.WriteLine("i = " + i);

5.C#知识点:ref和Out关键字浅谈

首先我们要知道ref和out在C#里面是什么? 答:它们俩是C#里面的关键字. 他们俩是干啥的呢? 答:他们俩是方法参数的修饰符号,一但使用,方法定义和方法都用都要使用这个关键字,这一点是死规定. 好了废话不多说,既然是修饰符,使用了他们一定是要有意义的对吧.我们先来看一手微软官方定义. 如果大家通过上面微软官方的定义明白了这个参数.那很好,下面的我写的就不需要看啦!还有疑惑就继续往下看.保证你能懂. 这里我先不直接讲解,我先掏出一手代码,然后通过代码讲解. using System; usin

Out 与 Ref 关键字的区别

相同点:既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量.简单的说就是:两者都是按地址传递的,使用后都将改变原来的数值. 不同点:1.使用ref型参数时,传入的参数必须先被初始化.对out而言,不必初始化作为 out 参数传递的变量, 但是必须在 out 所定义的方法中对其初始化,在方法返回之前为 out 参数赋值. 2.使用r

《ASP.NET 1200例》ref关键字与out关键字

out keyword causes arguments to be passed by reference.'>REF关键字 out keyword causes arguments to be passed by reference.'>ref keyword causes an argument to be passed by reference, not by value.'>ref 关键字会导致通过引用传递的参数,而不是值. 通过引用传递的效果是在方法中对参数的任何改变都会反映

ref in out params

参数类型可以分为ref.in.out这三种,默认的都是in. 通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量.它们的区别是: 1.把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数.在函数使用out参数时,必须把它看成是尚未赋值,调用代码可以把已赋值的变量用作out参数,但存储在该变量中的值会在函数执行时丢失. 以下是关于out使用的一个示例 using System; using System.C