`
holoblog
  • 浏览: 1221681 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18863
文章分类
社区版块
存档分类
最新评论

c# ref关键字

 
阅读更多
C# 语言参考<!---->
ref(C# 参考)<!---->
<!--Content type: DocStudio. Transform: devdiv2mtps.xslt.-->

ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。例如:

class RefExample
{
    static void Method(ref int i)
    {
        i = 44;
    }
    static void Main()
    {
        int val = 0;
        Method(ref val);
        // val is now 44
    }
}

传递到 ref 参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化。(请参见 out。)

尽管 refout 在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:

class CS0663_Example 
{
    // compiler error CS0663: "cannot define overloaded 
    // methods that differ only on ref and out"
    public void SampleMethod(ref int i) {  }
    public void SampleMethod(out int i) {  }
}

但是,如果一个方法采用 refout 参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:

class RefOutOverloadExample
{
    public void SampleMethod(int i) {  }
    public void SampleMethod(ref int i) {  }
}
<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl12bccfc0c,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl12img,"; </script>备注备注
分享到:
评论

相关推荐

    正确理解C#中的ref关键字

    正确理解C#中的ref关键字,有助于编程人员对ref的理解

    C#中关键字ref与out的区别

    C#中关键字ref与out的区别:可以在程序中很好的使用ref和out关键字

    C#语法基础_关键字_值与非值

    非值关键值诠释了语法规则,程序的运行规则,与值关键字共同使用构成C#面向对象的编程基础,由他们组合编译成的程序,可以被.net框架识别并运行。 值关键字包括bool,int,char,byte,double,float等。 非值关键字包括...

    nnngu#LearningNotes#008 如何用java语言实现C Sharp中的ref关键字(按引用传递参数)的效果1

    先看一下微软的C#文档对按引用传递的定义(如下截图):

    C#中ref和out的区别浅析

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

    C# ref和out的区别

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

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

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

    C# 7.0之ref locals and returns(局部变量和引用返回)

    首先我们知道ref关键字是将值传递变为引用传递,那么我们先来看看ref locals(ref局部变量) 列子代码如下: static void Main(string[] args) { int x = 3; ref int x1 = ref x; //注意这里,我们通过ref关键字 把x...

    c#进行项目设计时可以直接使用资源

    11.c#基础ref和out 12.c#基础二分查找法 13.c#基础数组选择排序 14.c#基础数组冒泡排序 15.c#基础二维数组 16.c#进阶类的设计 17.c#进阶static关键字 18.c#进阶构造方法 19.c#进阶构造方法 20.c#进阶构造方法(静态...

    详解C#中三个关键字params,Ref,out

    本文主要讨论params关键字,ref关键字,out关键字。非常不错,具有参考借鉴价值,需要的朋友参考下吧

    C#程序设计复习题.doc

    5、使用ref关键字和out关键字都是通过引用传递参数,不同的是ref方式要求实参必须 在传递之前进行__________。而采用out方式时不要求在调用方法前对实参进行____ ______。 6、静态方法只能访问类中的 ________ 字段...

    C#编程中使用ref和out关键字来传递数组对象的用法

    主要介绍了C#编程中使用ref和out关键字来传递数组对象的用法,在C#中数组也是对象可以被传递,需要的朋友可以参考下

    c#笔试时一些小程序输出题

    主要是公司在招聘时出的一些小程序输出题,主要考察应聘者的基本功,比如继承、多态及ref关键字等问题

    理解C#中参数的值和引用以及传递结构和类引用的区别

    若要通过引用传递参数,请使用 ref 或 out 关键字。 下面的示例阐释值与引用参数之间的区别: class Program { static void Main(string[] args) { int arg; // Passing by value. // The value of arg in ...

    C#中按引用传递与按值传递的区别,以及ref与out关键字的用法详解

    以下是对C#中按引用传递与按值传递的区别,以及ref与out关键字的用法进行了详细的分析介绍,需要的朋友可以过来参考下

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

    在上篇文章深入理解值类型和引用类型的时候,有的小伙伴就推荐说一说ref和out 关键字,昨天晚上彻夜难眠在想是否要谈一下呢,因为可谈的不是太多,也可能是我理解的不够深刻。 C#有两种参数传递方式:传值和引用,...

    .Net Core中使用ref和SpanT提高程序性能的实现代码

    二、ref关键字 不论是ref还是out关键,都是一种比较难以理解和操作的语言特性,如C语言中操作指针一样,这样的高级语法总是什么带来一些副作用,但是我不认为这有什么,而且不是每一个C#开发者都要对这些内部运行的...

    C#基础知识

    它包含了C#的许多基础知识,例如面向对象、静态类与非静态类的区别,构造函数与析构函数的区别,out和ref关键字的区别,C#中的垃圾回收机制,递归,冒泡排序,自定义遍历器,事件与委托,集合类的说明等重要知识点。

    c# 基础知识巩固

    c# 基础知识中的一些小知识点,如REF,OUT关键字,类型推断等等。

    在一小时内学会 C#(txt版本)

    在一小时内学会 C#。使用例程,简单却完整的探索 C# 语言的构造和特点。本文特别适合有 C++ 基础却没有太多精力学习 C# 的读者。 关于作者 Aisha Ikram 我现在在英国一家软件公司任技术带头人。我是计算机科学的...

Global site tag (gtag.js) - Google Analytics