`

Ref与Out的区别

 
阅读更多
ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。

对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别。

总结起来,他们有如下语法区别:



1、ref传进去的参数必须在调用前初始化,out不必,即:
int i;
SomeMethod( ref i );//语法错误
SomeMethod( out i );//通过



2、ref传进去的参数在函数内部可以直接使用,而out不可:
public void SomeMethod(ref int i)
{
   int j=i;//通过
   //...
}
public void SomeMethod(out int i)
{
   int j=i;//语法错误

}


3、ref传进去的参数在函数内部可以不被修改,但out必须在离开函数体前进行赋值。

ref在参数传递之前必须初始化;而out则在传递前不必初始化,且在 ... 值类型与引用类型之间的转换过程称为装箱与拆箱。


总结:
应该说,系统对ref的限制是更少一些的。out虽然不要求在调用前一定要初始化,但是其值在函数内部是不可见的,也就是不能使用通过out传进来的值,并且一定要在函数内赋一个值。或者说函数承担初始化这个变量的责任。

1.都是地址传值的方式。
2.ref是有进有出,out是只出不进。
3.ref在返回时不需要赋值,out在返回前必须赋值。
分享到:
评论

相关推荐

    ref out 的区别

    与 `ref` 类似,`out` 也用于引用传递,但它允许方法返回多个值。不同于 `ref`,`out` 参数在方法调用时不需预先初始化。实际上,`out` 参数的职责在于方法内部,它必须在方法的主体中被赋值。这使得 `out` 成为一种...

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

    C#中关键字ref与out的区别 C#中关键字ref与out的区别是非常重要的知识点之一。这些关键字可以使参数按照引用来传递,而不是传递值的拷贝。通常情况下,我们向方法中传递的是值,方法获得的是这些值的一个拷贝,然后...

    out和ref的区别

    理解`out`和`ref`的区别有助于编写更明确的代码。使用`out`时,调用者清楚地知道方法将提供一个结果,而使用`ref`则表明方法可能修改传入的变量。在实际编程中,应根据需求选择合适的关键字,以提高代码的可读性和...

    ref和out的作用(txt)

    与`ref`类似,`out`也使得方法能够直接修改传递给它的参数值。但是,`out`参数有一些关键的区别: 1. **调用方法时不需要事先初始化参数**:这是因为`out`参数的预期用途是作为方法的返回值的一部分,而不是用来...

    C#中ref和out的区别浅析

    因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢? MSDN:  ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该...

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

    `out`关键字也允许将参数通过引用传递到方法中,但它与`ref`有一些重要的区别: 1. **初始化**:与`ref`不同,使用`out`参数的变量在传递前不必被初始化。 2. **默认值**:当使用`out`参数时,如果没有为该参数赋值...

    C# ref和out的区别

    ### C#中`ref`与`out`的关键区别 在C#编程语言中,方法的参数传递机制提供了多种方式来处理方法内部对外部变量的访问和修改。这其中包括了通过值(by value)和通过引用(by reference)两种基本模式。通过引用传递...

    out和ref传值的区别

    ### out和ref传值的区别 在C#编程语言中,函数调用时参数传递的方式有多种,其中`out`和`ref`关键字是用于值类型(如int、struct等)参数传递的重要方式。这两种方式虽然都能实现将局部变量的值传递给方法,但它们...

    ref和out传值

    - **作用**:`out` 关键字也用于按引用传递参数,但与 `ref` 的主要区别在于,方法定义时无需确保参数已初始化。 - **要求**:`out` 参数在方法内部必须被初始化,因为它是方法的输出。 - **使用场景**:当方法...

    ref和out的区别

    - `out`参数:与`ref`不同,`out`参数不必在调用方法之前初始化。相反,它要求方法内部为其分配值,确保在方法返回之前变量被正确设置。 2. **参数匹配**: - 无论是`ref`还是`out`,在调用方法时都需要在参数前...

    (搜集整理的)C_中ref和out用法

    1. `out`关键字与`ref`类似,也是通过引用传递参数,但不同之处在于`out`参数不必在传递前初始化。 2. 被`out`标记的参数在方法内部必须被赋值,这使得`out`成为返回多个值的有效手段。 3. 同样,`out`也需要在方法...

    in.ref.out C#传值调用与引用调用

    `out` 关键字也允许通过引用传递参数,但它与 `ref` 有一个关键的区别:`out` 参数必须在方法内部被赋值,并且在调用方法时可以不需要初始化该变量。 **示例代码解析**: ```csharp int c; AMethod(in a, ref b, ...

    Unity3D教程:ref 、out、params参数区别1

    其次,`out`关键字与`ref`相似,也是按引用传递参数,但它有一个重要的区别:`out`参数在方法被调用时不需初始化,而且方法有责任在执行过程中为其赋值。`out`通常用于当方法需要返回多个值时。一个方法可以有多个`...

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

    本文实例讲述了C#中Out与Ref的区别,可以加深C#程序设计人员对Out和Ref用法的理解,具体分析如下: 一、区别分析: Out和Ref作为参数传递到方法体中,所传递的都是引用地址,两者在操作上本身没有区别。 但Out传递到...

    Ref和Out参数的例子

    `Ref`与`Out`的区别: 1. 初始化:`Ref`参数必须在调用方法之前初始化,而`Out`参数则不需要。 2. 赋值:`Ref`参数允许方法修改已存在的值,`Out`参数则更像是方法向调用者提供一个新值。 3. 返回值:`Ref`参数通常...

    C_基础:ref和out的区别.txt

    ### C# 基础:ref与out的区别 在C#编程语言中,`ref` 和 `out` 是两个非常重要的关键字,它们主要用于传递参数,特别是在函数调用时需要修改方法外部变量的情况下。掌握 `ref` 和 `out` 的正确使用方式对于编写高...

    Ref和out关键字的区别

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

    C#中ref与out语法的使用

    `out`参数与`ref`类似,也允许函数修改传入的变量值,但其主要区别在于,`out`参数在函数调用时不需要预先初始化。实际上,函数有责任确保`out`参数在函数执行完毕前被赋值。下面是一个`out`的例子: ```csharp ...

Global site tag (gtag.js) - Google Analytics