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

class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;
Method(out value);
// value is now 44
}
}

尽管作为 out 参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。

ref 和 out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:
class CS0663_Example
{
// compiler error CS0663: "cannot define overloaded
// methods that differ only on ref and out"
public void SampleMethod(out int i) { }
public void SampleMethod(ref int i) { }
}

但是,如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:
class RefOutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(out int i) { }
}

备注
属性不是变量,因此不能作为 out 参数传递。

有关传递数组的信息,请参见使用 ref 和 out 传递数组。

示例
当希望方法返回多个值时,声明 out 方法很有用。使用 out 参数的方法仍然可以将变量用作返回类型(请参见 return),但它还可以将一个或多个对象作为 out 参数返回给调用方法。此示例使用 out 在一个方法调用中返回三个变量。请注意,第三个参数所赋的值为 Null。这样便允许方法有选择地返回值。

class OutReturnExample
{
static void Method(out int i, out string s1, out string s2)
{
i = 44;
s1 = "I've been returned";
s2 = null;
}
static void Main()
{
int value;
string str1, str2;
Method(out value, out str1, out str2);
// value is now 44
// str1 is now "I've been returned"
// str2 is (still) null;
}
}

转载于:https://www.cnblogs.com/mrxiaohe/p/5200190.html

c# out ref相关推荐

  1. 【C#】Out与ref是干什么的?

    关于return: 1.最后没有写 return 语句的话,表示程序正常退出 2.不需要返回值时,存在return的作用 例子 void main() {return; //return退出该程序的作 ...

  2. ref与out的区别

    前一段时间老用ref与out 感觉他们的效果差不多,就去网上查了一下他们的区别,网上说的概念性的东西太多了,后来通过自己的摸索发现他们有一个规律 ref: 在引用方法之外必须赋初值 static vo ...

  3. ref和out的区别

    ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键 ...

  4. C# ref和out关键字

    ref和out关键字初解     参数可以通过引用和值传递给方法.通过引用传递给方法的变量可以有调用它的方法作自由改变,所作的修改会影响原来的变量的值:在C#中,除非特别说明,所有的参数都是值传递. ...

  5. java g1 gc ref proc_java – 针对sparc T4 8核的正确G1 GC调优

    我的应用程序部署在Solaris上运行的weblogic上,采用双SPARC T4 8核3.0 GHz.这个weblogic实例正在使用g1 gc,我认为可以改进当前的配置: GC_OPTIONS=& ...

  6. react中ref的使用

    在react中获取真实dom的时候就需要用到ref属性,具体使用如下 var MyComponent = React.createClass({handleClick: function() {con ...

  7. ref和out 传递参数(C#)

    1.参数传递默认都是传递栈空间里面存储的内容 2.如果添加了ref那么传递的都是栈空间地址,而不再是栈空间里面的内容 3.如果添加了out,那么传递的也是栈空间的地址 1 //写一个方法计算一个int ...

  8. 【vue】vue中ref用法

    1.获取当前元素: 例子: <div class="pop pos-a" :style="{ left: pop_x + 'px' ,top: pop_y + 'p ...

  9. Vue教程3【使用Vue脚手架】render ref props minin scoped $emit $bus 消息订阅发布 动画

    npm全局安装 切换淘宝npm镜像 npm config set registry https://registry.npm.taobao.org全局安装 npm install -g @vue/cl ...

  10. out与ref的区别

    out与ref的区别  前者传参时不必初始化,后者需要初始化 int a,b; public void fName(out int a,out int b); fName(out a , out b) ...

最新文章

  1. C#设置本地网络(DNS、网关、子网掩码、IP)
  2. 第二章 反向传播算法如何工作的?
  3. hybris backoffice搜索时遇到could not execute full-text query的解决方案
  4. ARC106E-Medals【hall定理,高维前缀和】
  5. dataTable删除行
  6. 靶形数独(信息学奥赛一本通-T1447)
  7. 高性能自旋锁 MCS Spinlock 的设计与实现(来自IBM)
  8. es分片及source字段小结
  9. (1)简单工厂模式C++实现
  10. Linux状态监控在root下可用,监控linux状态
  11. kuangbin字典树
  12. 计算机英语词汇汇总,计算机英语词汇汇总
  13. 蓝色音箱改装电源_JBL便携/无线音箱排行榜,JBL便携/无线音箱十大排名推荐
  14. 【ZT】记住这些,或许可以救你一命!!【强力推荐帖!】
  15. 张博涵清华大学_2009年北大,清华提前录取保送生人数最多的 33所中学
  16. HC-05蓝牙模块配对方法及AT指令配置
  17. 微信小程序怎么上架和发布商品?
  18. nonce值是什么?(Number once)(Number used once)cnonce(client nonce)(一个只被使用一次的任意或非重复的随机数值)
  19. windows配置java环境
  20. Flutter如何使widget始终保持在屏幕底部

热门文章

  1. EDM营销中HTML邮件设计的技巧
  2. 《Visual Studio程序员箴言》笔记
  3. JavaScript使用技巧精萃
  4. 浏览器打不开网页问题
  5. 开发板与linux文件系统,基于topeer 4412开发板 ***面linux文件系统的制作
  6. 基于Virtex-6 FPGA的三种串行通信协议测试及对比
  7. FPGA SelectMap接口配置设计
  8. Word中样式更新的两种方法!
  9. 如何理解Excel数组公式{=sum(1/countif(B8:K9,B8:K9))}
  10. pytorch手写数字识别验证四流网络