不同的是:
ref在于将值类型参数当作引用型参数传递到函数,并且在函数内部的任何改变也都将影响函数外部该参数的值;因此ref必须在函数体外初始化。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
{
class Program
{
static void Main(string[] args)
{
MyClass mc = new MyClass();
string j = "10";//必须赋值,如果不赋值的话就会报错
mc.myref(ref j);//把j的值传递到myref中,并打印结果得 10
Console.WriteLine(j);//带回myref中对参数赋的值,得到结果 100
int i = 10;//对i赋值毫无意义,
mc.myout(out i);//调用函数内部的值 100
Console.WriteLine(i);// 毫无疑问结果也是 100
int[] arrint = new int[] { 1, 2, 3 };
mc.myparams(arrint);//可以直接传递数组名
mc.myparams( 4, 5, 6, 7);//直接传递数组中的元素
}
{
//ref作参数
public void myref(ref string i)
{
Console.WriteLine(i);
i = "100";
}
//out作参数
public void myout(out int i)
{
i = 100;//必须在函数内部对该参数赋值
Console.WriteLine(i);
}
//动态参数
public void myparams(params int[] arrint)
{
foreach (int i in arrint)
{
Console.WriteLine(i);
}
}
}
}