关于你的问题这里有一篇blog有很详细的介绍,值得去学习下:
http://www.cnblogs.com/Tally/archive/2012/05/24/2516455.html
而且在我实际写代码与遇到了ref和out;
比如下面一段代码使用到out:
if (int.TryParse(str, out i1)) //判断输入是否合法
{
switch (i1)
{
case 1:
Fighter fighter = new Fighter(); //实例化Fighter
Console.WriteLine("给你的战士取个名字吧!");
fighter.Name = Console.ReadLine(); //为Name赋值
fighter.HP = 250; //为HP赋值
fighter.MP = 80; //为MP赋值
fighter.AP = 150; //为AP赋值
Console.WriteLine("{0}: {1} HP {2} MP {3} AP {4}",fighter.Name,fighter.Name, fighter.HP, fighter.MP, fighter.AP);
Console.WriteLine();
while (boss.HP > 0) //判断BOSS的HP时候大于0
{
Console.WriteLine("请选择攻击方式:1、普通攻击 2、技能一 3、技能二 4、怒气技能 ");
int i2 = Convert.ToInt32(Console.ReadLine());
switch (i2) //选择攻击方式
{
case 1: //普通攻击
Console.WriteLine("普通攻击造成30点伤害\t");
boss.HP = boss.HP - fighter.Fight();
Console.Write("BOSS的HP剩下 {0}\n", boss.HP);
break;
case 2: //技能
break;
default: break;
}
}
break;
}
}
使用ref:
static void Change(ref int left, ref int right)
{
int temp; //定义临时变量
temp = left; //将第一个数赋予temp
left = right; //第二个数的值赋予第一个数
right = left; //将temp中的值赋予第二个数,完成两数交换
}
//鸡尾酒排序
//intArr为要待排序的数组
static void Cock(int[] intArr)
{
int low, up, index; //定义变量,index为临时变量
low = 0; //low为数组的开始索引
up = intArr.Length - 1; //up为数组的结束索引
index = low;
while (up > low)
{
for (int i = low; i < up; i++) //从低位向高位扫描
{
if (intArr[i] > intArr[i + 1]) //比较前后两数的大小
{
Change(ref intArr[i], ref intArr[i + 1]); //若前面的数大于后面的数,则交换
index = i; //记录当前索引位置
}
}
up = index; //记录最后一次交换的位置
for (int i = up; i > low; i--) //从高位向低位扫描
{
if (intArr[i + 1] < intArr[i]) //比较前后两数的大小
{
Change(ref intArr[i], ref intArr[i + 1]); //若后面的数小于前面的数,则交换
index = i; //记录当前索引位置
}
}
low = index;
}
}
楼主可以自己实践体会下ref和out同异之处。
|