zhyDaDa的个人站点

目录
复习
方法的调用问题
练习1
方法的概念
练习2
两个练习

复习

  • 常量: 赋予初始值后, 不可以重新赋值
    const int number = 10;
  • 枚举: 可以和int兼容, 和string转换很复杂
public enum Gender
{
    男,
    女
}
string s = "男";
Gender g = (Gender)Enum.Parase(typeof(Gender), s);
  • 结构: 字段可以存储多个值, 命名的时候记得带上下划线\”_\”
public struct Person
{
    public string _name;
    public age _age;
    public Gender _gender;
}
Person zsPerson;
zsPerson._name = "张三";
zsPerson._age = 20;
zsPerson._gender = Gender.男
  • 数组: 一次性存储多个相同类型的变量
    数组的长度一旦声明不可改变
int[] numbers = new int[10];
  • 数组操作: 冒泡排序

    面试时体现领悟力使用

int[] numbers = { 123, 8, 445, 26, 45, 65, 46 };
for (int i = 0; i < numbers.Length - 1; i++)
{
    for (int j = 0; j < numbers.Length - i - 1; j++)
    {
        if (numbers[j] > numbers[j + 1])
        {
            int temp = numbers[j + 1];
            numbers[j + 1] = numbers[j];
            numbers[j] = temp;
        }
    }
}
for (int i = 0; i < numbers.Length - 1; i++)
{
    Console.Write(numbers[i] + "<");
}
Console.Write(numbers[numbers.Length - 1]);
Console.ReadKey();

平日里为了效率使用

int[] numbers = { 123, 8, 445, 26, 45, 65, 46 };
Array.Sort(numbers);
for (int i = 0; i < numbers.Length - 1; i++)
{
    Console.Write(numbers[i] + "<");
}
Console.Write(numbers[numbers.Length - 1]);
Array.Reverse(numbers);
for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine(numbers[i]);
}
Console.ReadKey();

方法的调用问题

  • 例子
static void Main(string[] args) //Main函数
{  //代码从这里走起
    int a = 3;
    Test();
    Console.WriteLine(a);
}
public static void Test()
{
    a += 5;
}

这个例子的运行结果是报错, 因为参数a在test中未命名
– 如果被调用者要获得调用者的值, 方法有二
+ 传参
+ 使用静态字段来模拟全局变量

public static void int _number = 10;
  • 注意: C#中没有全局变量这一说
  • 如果调用者要获得被调用者的值
  • return

练习1

  • 写一个方法, 判断是否是闰年
static void Main(string[] args) //Main函数
{  //代码从这里走起
    bool b = IsRun(2022);
    Console.WriteLine(b);
}
/// <summary>
/// 判断给定的年份是否是闰年
/// </summary>
/// <param name="year">给定的年份</param>
/// <returns>是否是闰年</returns>
public static bool IsRun(int year)
{
    bool b = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
    return b;
}
  • 注意\: \”并非所有的代码路径都返回值\” 的语法错误对应的情况是: 声明了返回值的类型但没有返回任何值

方法的概念

  • 实参: 在传参时, 实实在在存在的参数
  • 形参: 在方法中使用的形式上的参数, 作用域只在其方法内部
  • 两者关系: 作用域不同, 没有必然的练习, 只有数据类型要求一致, 且两者都在内存中开辟空间

练习2

  • 读取输入的整数, 如果输入是数字, 则返回, 否则提示用户重新输入
while (true)
{
    Console.WriteLine("请输入数字");

    try
    {
        int number = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine(number);
        break;
    }
    catch
    {
        Console.WriteLine("输入有误");
    }
}
Console.ReadKey();
  • 典型错误
Main(){
    NewMethod();
    Console.ReadKey();
}

原则: 方法的功能一定要单一
忌讳: 方法中出现提示用户输入的字眼

否则, 这就限定了这个方法只能在控制台程序中使用
而其他程序开发将不兼容
团队合作中也很讨厌

  • 正确事例
static void Main(string[] args) //Main函数
{  //代码从这里走起
    Console.WriteLine("请输入一个整数");
    Console.WriteLine(GetNumber(Console.ReadLine()));
    Console.ReadKey();

}

/// <summary>
/// 判断用户的输入是否是数字
/// 是数字就返回
/// 不是, 就提示用户重新输入
/// </summary>
public static int GetNumber(string s)
{
    while (true)
    {
        try
        {
            int number = Convert.ToInt32(s);
            return number;
        }
        catch
        {
            Console.WriteLine("请重新输入");
            s = Console.ReadLine();
        }
    }
}

两个练习

  • 只允许输入y和n, 用方法实现
static void Main(string[] args) //Main函数
{  //代码从这里走起
    // 方法的效果, 只输入y或n, 只要不是, 重新输入

    Console.WriteLine("请输入y或者n");
    Console.WriteLine(IsYesOrNo(Console.ReadLine()));
    Console.ReadKey();

}
/// <summary>
/// 限定用户只能输入yes或者no
/// </summary>
/// <param name="input">用户的输入</param>
/// <returns>"y"或者"n"</returns>
public static string IsYesOrNo(string input)
{
    while (true)
    {
        if (input == "y" || input == "n")
        {
            return input;
        }
        else
        {
            Console.WriteLine("只能输入y或者n, 请重新输入");
            input = Console.ReadLine();
        }
    }
}
  • 计算输入数组的总和
static void Main(string[] args) //Main函数
{  //代码从这里走起
    int[] numbers = { 1, 2, 3, 4, 5, 6 };
    Console.WriteLine(GetSum(numbers));
}
/// <summary>
/// 输入整数数组, 返回其总和
/// </summary>
/// <param name="numbers">数组</param>
/// <returns>总和</returns>
public static int GetSum(int[] numbers)
{
    int sum = 0;
    for (int i = 0; i < numbers.Length; i++)
    {
        sum += numbers[i];
    }
    return sum;
}
Avatar photo
我是 zhyDaDa

前端/UI/交互/独立游戏/JPOP/电吉他/游戏配乐/网球/纸牌魔术

发表回复