ref 关键字用在四种不同的上下文中;
1.在方法签名和方法调用中,按引用将参数传递给方法。
2.在方法签名中,按引用将值返回给调用方。
3.在成员正文中,指示引用返回值是否作为调用方欲修改的引用被存储在本地,或在一般情况下,局部变量按引用访问另一个值。
4.在 struct 声明中声明 ref struct 或 readonly ref struct。
先看按引用传递参数;
在方法的参数列表中使用 ref 关键字时,它指示参数按引用传递,而非按值传递。
不要混淆通过引用传递的概念与引用类型的概念。
当通过引用传递时,不会对值类型装箱。
若要使用 ref 参数,方法定义和调用方法均必须显式使用 ref 关键字;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
-
- public Form1()
- {
- InitializeComponent();
- }
-
- private void button1_Click(object sender, EventArgs e)
- {
- int number = 7;
- add44(ref number);
- textBox1.Text = number.ToString();
- }
-
- void add44(ref int a)
- {
- a = a + 44;
- }
- }
- }

传递到 ref 或 in 形参的实参必须先经过初始化,然后才能传递;
这与 out 形参不同,在传递之前,不需要显式初始化该形参的实参;