今天在看discuz!nt 源代码的时候,一些地方用到了ref关键字,由于平时很少接触这东西,略感疑惑,于是在MSDN上找到了答案,挺有意思的,以下摘抄自MSDN:

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

简单的说就是:通常在值传递时,只是传递的对象的副本,对副本的操作,不能影响到对象本身,而 加上REF关键字后,所做的任何修改,都捡影响到对象本身.

Code
 1public partial class Ref_Default : System.Web.UI.Page
 2{
 3    protected void Page_Load(object sender, EventArgs e)
 4    {
 5        int oldInt = 10;
 6        TestRef(ref oldInt);
 7        Response.Write(oldInt.ToString());
 8    }
 9
10    public void TestRef(ref int newInt)
11    {
12        newInt = 20;
13    }
14}
15

这段代码最后输出的会是20

转载于:https://www.cnblogs.com/tufan/archive/2009/04/19/1439111.html

C#中的ref关键字相关推荐

  1. 使用C#中的ref关键字,用2个简单例子来说明

    在C#中,如果在方法参数前面加上ref关键字,说明参数传递的是引用,而不是值.如何理解呢? 参数是简单类型的例子 static void Main(string[] args){string temp ...

  2. 如何用java语言实现C#中的ref关键字(按引用传递参数)的效果

    https://www.cnblogs.com/nnngu/p/8300164.html 转载于:https://www.cnblogs.com/cnki/p/10409684.html

  3. C#中的String和string有什么区别?还有ref关键字怎么用?

    String 和 string 没有区别 string 是 String 的别名 ref 关键字一般只用于函数参数中,这个参数是 struct 类型,而不是 class 类型 因为 class 类型在 ...

  4. 【C#】C#中的ref、out关键字的应用与区别

    目录 01. 本文背景 02.ref的定义与使用 03.out的定义与使用 04.ref与out的区别 05.小结 01. 本文背景 原本我是一个地地道道的C/C++开发者,我其实很难想象有一天我会去 ...

  5. c#中使用ref和out传值

    c#中使用ref和out传值 首先,如果不使用这两个关键字,那是什么样 呢? 看下面的例子: 使用ref: using System; class Test { static void Swap(re ...

  6. .Net Core中使用ref和Spanamp;lt;Tamp;gt;提高程序性能

    一.前言 其实说到ref,很多同学对它已经有所了解,ref是C# 7.0的一个语言特性,它为开发人员提供了返回本地变量引用和值引用的机制. Span 也是建立在ref语法基础上的一个复杂的数据类型,在 ...

  7. .Net Core中使用ref和SpanT提高程序性能

    一.前言 其实说到ref,很多同学对它已经有所了解,ref是C# 7.0的一个语言特性,它为开发人员提供了返回本地变量引用和值引用的机制. Span也是建立在ref语法基础上的一个复杂的数据类型,在文 ...

  8. 【C# 教程系列第 4 篇】什么是 c# 中的 ref 参数?

    这是[C# 教程系列第 4 篇],如果觉得有用的话,欢迎关注专栏. 写这篇博客之前,本来想把标题写成 "ref参数与out参数的区别",但想了想还是分开写吧,以免更混淆大家. 首先 ...

  9. c#中out ref的简单使用说明

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

  10. mysql用于删除表中数据的关键字是_MySQL-删除数据(DELECT)

    数据库备份介绍: 数据库一旦删除数据,它就会永远消失. 因此,在执行DELETE语句之前,应该先备份数据库,以防万一要找回删除过的数据. MySQL提供了非常有用的工具,用于在服务器上本地备份或转储M ...

最新文章

  1. html手机不能自动播放音乐,解决移动端浏览器 HTML 音频不能自动播放的三种方法...
  2. python axis=0 axis=1的区别
  3. C++14尝鲜:Generic Lambdas(泛型lambda)
  4. s5720找mac 华为交换机_【基础】交换机堆叠模式
  5. python延时函数_Python实现屏幕自动截图
  6. SpringMVC 的执行流程
  7. 冬知寒,我方暖,3本Python好书赠你慢慢品
  8. ubuntu good 便签
  9. GlobalAuthenticationConfigurerAdapter.class 整合activiti 工作流报错
  10. java 子类 同名参数_Java -- 父类和子类拥有同名变量
  11. mysql主从复制(原理以及配置)
  12. C语言学习记录_2019.02.08
  13. Kubernetes 两步验证 - 使用 Serverless 实现动态准入控制
  14. 青春散场,永远的天王!
  15. 如何利用快解析快速实现动态域名解析,内网穿透?
  16. 四色印刷和专色印刷的区别是什么?
  17. 数位DP(期末机测题)
  18. 程序员从来没给丈母娘买礼物,真相竟然令人沉默
  19. 嵌入式设计实验三:Tasket与工作队列
  20. Ubuntu16.04下fctix无法切换中英文输入法

热门文章

  1. 19/03/17Python笔记
  2. Ubutu: mysql + jdk + tomcat installation
  3. 326 Power of Three 3的幂
  4. python--re模块
  5. Jumpserver代码规范
  6. 如何创建 Visual Studio 2017 RC 离线安装包
  7. ASP 中健壮的页结构的异常处理
  8. Mac如何修复“无法卸载磁盘”错误
  9. Arturia Prophet V3 for Mac(多功能仿真音乐合成器)
  10. 最容易被你忽略的Mac神级功能!Mac访达里一切皆可标记