c#第八课

82 阅读2分钟

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;
}