out与ref输出
当需要返回多个同类型值,可以用数组。当需要返回多个不同类型值,可以用到out和ref
int num2 = 2;
static bool isPrime(int num,out int num1)
{
num1 = 1;//定义out参数后面的变量 在函数内部必须赋值
return true;
}
isPrime(10,out num2);//将num1的值赋给num2=num1
Console.WriteLine(num2);
//练习:编写一个方法,判断输入的用户名和密码是否正确,返回用户一个结果
Console.WriteLine("请输入用户名:");
string name = Console.ReadLine();
Console.WriteLine("请输入密码:");
string pwd = Console.ReadLine();
string message = "1";
static bool regist(string name, string pwd, ref string message)
{
if (name == "admin" && pwd == "1234")
{
message = "登录成功";
return true;
}
else if (name == "admin" && pwd != "1234")
{
message = "密码错误";
}
else if (name != "admin" && pwd != "1234")
{
message = "用户名错误";
}
else
{
message = "用户名密码错误";
}
return false;
}
//regist(name,pwd,out message);
//Console.WriteLine(message);
//ref 同样获取函数中变量的值 不同的是在函数中不用赋值 外部接受的变量需要赋初值
regist(name,pwd,ref message);
Console.WriteLine(message);
练习:
一只青蛙可以跳1级台阶,也可以跳2级台阶,求青蛙跳n阶台阶共有几种跳法
int n =Convert.ToInt32(Console.ReadLine());//楼梯数
static int floor(int n)
{
if (n == 1) return 1;
if (n == 2) return 2;
return floor(n-1)+ floor(n - 2);
}
Console.WriteLine(floor(n));
枚举
//在类中声明
enum Role
{
射手, 辅助, 刺客, 法师, 战士 //编号从0开始
}
//在main函数中使用
Role role = Role.射手;
Console.WriteLine(role);//射手
int intRole = Convert.ToInt32(role);//枚举类型的名字可以转成整数
Console.WriteLine(intRole + 1);//1
string strRole = Console.ReadLine();//枚举类型的名字可以转成字符串
Console.WriteLine(strRole + 1);//射手1
Role Role2 = (Role)Enum.Parse(typeof(Role), "1"); //字符串转成枚举类型的值
Console.WriteLine(Role2);//辅助
//练习:提示用户选择一个QQ在线状态,分别有OnLIne,OffLine,Busy3种状态
Console.WriteLine("请输入编号");
string strNum = Console.ReadLine();
switch (strNum)
{
case "0":
Console.WriteLine(State.OnLine);
break;
case "1":
Console.WriteLine(State.OffLine);
break;
case "2":
Console.WriteLine(State.Busy);
break;
default:
Console.WriteLine("无状态");
break;
}