Ref参数:
class Program
{
static void Main(string[] args)
{
int a = 10;
Swap(a);//正常的调用是值传递,相当于把a的值复制到Swap中
Console.WriteLine("在调用Swap后a={0}",a);//所以调用完Swap后,a的值仍然是10
Change(ref a);//ref是引用,是调用后直接把a的值给改变了。
Console.WriteLine("在调用Change后a={0}", a);//所以调用完Change后,a的值变成了15,和Change里面的a一样了
Console.ReadKey();
}
static void Swap(int a)
{
a = a + 5;
Console.WriteLine(a );//在Swap中a的值增加了5,变成了15
}
static void Change(ref int a)
{
a = a + 5;
Console.WriteLine(a);
}
}
Out参数:
class Program
{
static void Main(string[] args)
{
int a;//当要用到out参数的时候,定义的变量不能赋值,要留给out赋值
Swap(out a);//调用Swap
Console.WriteLine(a);
Console.ReadKey();
}
static void Swap(out int a)//Swap中参数out 的作用是给a赋初值
{
a = 10;
Console.WriteLine(a );//在Swap中a的值增加了5,变成了15
}
}
class Program
{
static void Main(string[] args)
{
string s = Console.ReadLine();
int i;
if (int.TryParse(s, out i))//调用int的TryParse属性,如果输入的s能转换为int类型,则为true,否则为false
{
i=i+10;
Console.WriteLine ("i={0}",i );
}
else
{
Console.WriteLine ("输入格式错误");
}
Console.ReadKey();
}
}
PS:ref和out的区别:ref是对已经赋值的变量对其的值进行改变,而out是对未赋值的变量进行初始化