初识C#(四)- 函数或方法

news/2024/9/28 10:17:06 标签: c#, 开发语言

函数就是一个外挂的方法,以便我们自己自定义某个功能

文章目录

  • 前言
  • 一、函数的使用
    • 1.1 函数的定义和使用
    • 1.2 函数参数分为(形参和实参)
    • 1.3 函数的返回值
  • 二、函数的递归
    • 2.1 调用自身的函数就是递归函数
  • 三、枚举类型
    • 3.1 枚举类型的声明与赋值
  • 总结


前言

本篇笔记重点描述C#中如何使用函数。


一、函数的使用

1.1 函数的定义和使用

函数的定义就像我们建房子,画好了一个蓝图,使用就等于对着这个蓝图去建地基

internal class Program
{
    static int Add(int a,int b)
    {
        int c = a + b;
        return c;//和break功能有点相似,因为方法返回之后,表示这个方法中止了
        Console.WriteLine("123");//这个代码相当于是没有用的
    }
    //主函数 入口函数  --- 主方法 入口方法
    private static void Main(string[] args)
    {
        int a = Add(10, 10);
        Console.WriteLine(a);
    }
}

1.2 函数参数分为(形参和实参)

形参是指形式参数,是一个变量,一般跟在创建函数()里面。实参是指在主函数(方法)里面的传递过去的实际参数。

internal class Program
{
    //方法的定义   //bool(返回值)             //形参  形式参数(也是一个变量)
    static bool VerifyUsername(string username)//void,空(不需要返回值的意思)
    {
        Console.WriteLine("校验逻辑修改");
        Console.WriteLine("校验逻辑修改2");
        Console.WriteLine("校验用户名");

        return true;//返回值,返回的值的类型要和返回值的类型保持一致
    }
    //主函数 入口函数  --- 主方法 入口方法
    private static void Main(string[] args)
    {
        //100-50
        //方法的调用
        //某个字符串    实参 实际参数
        bool result = VerifyUsername("siki");//得到返回值,这个返回值可以得到也可以不得到
        Console.WriteLine(result);

        VerifyUsername("aabb");

        VerifyUsername("my");
    }
}

1.3 函数的返回值

这里我们用回1.1的代码解释,返回值就是return,即返回数值到上级。而且return和break功能有点相似,在方法返回后,就表示这个方法中止了。

internal class Program
{
    static int Add(int a,int b)
    {
        int c = a + b;
        return c;//和break功能有点相似,因为方法返回之后,表示这个方法中止了
        Console.WriteLine("123");//这个代码相当于是没有用的
    }
    //主函数 入口函数  --- 主方法 入口方法
    private static void Main(string[] args)
    {
        int a = Add(10, 10);
        Console.WriteLine(a);
    }
}

二、函数的递归

2.1 调用自身的函数就是递归函数

递归函数和循环有点类似,但是逻辑上却有一些不同。但是递归函数在代码书写上和观赏性来说比循环要舒服一些。

internal class Program
{
    static void Test()
    {
        Console.WriteLine("test1");
        Test();
    }//死递归,因为没有return返回终止
    static int F(int n)
    {
        if (n == 0)
        {
            return 2;
        }
        if (n == 1)
        {
            return 3;
        }
        int res = F(n - 1) + F(n - 2);
        return res;
    }
    private static void Main(string[] args)
    {
        fn = fn1 +fn2 f0=2 f1=3
        //int n1 = 3;//f1 
        //int n2 = 2;//f0
        //int n = 0;
        //for (int i = 2; i < 41; i++)//2遍历到40
        //{
        //    n = n1 + n2;
        //    n2 = n1;
        //    n1 = n;
        //}
        Console.WriteLine(F(40));
    }
}

三、枚举类型

3.1 枚举类型的声明与赋值

internal class Program
{
    enum RoleType//枚举类型的名字 RoleType 角色类型 
    {
        mage,Archer,Assassin,Tank,Support,Warrior //枚举类型的值
    }
    private static void Main(string[] args)
    {
        //函数 - 定义 使用
        //1法师(mage),2射手(Archer),3刺客(Assassin),4坦克(Tank),5辅助(Support),6战士(Warrior)
        //int roleType = 4;

        //roleType = 3;

        //int long string是系统提供好的类型,这个RoleType是我们自己新创建的枚举类型
        //RoleType roleType = RoleType.Assassin;

        //if(roleType == RoleType.Assassin)
        //{

        //}

        GameState gameState = GameState.Menu;
        gameState = GameState.Running;
        if(gameState == GameState.Menu) { 
            
        }
        Console.WriteLine(gameState);

        WeekDay day = WeekDay.Wed;
        day = WeekDay.tue;
    }
    //菜单、游戏中、暂停、失败、成功
    enum GameState//枚举的变量名名字一般首字母大写
    {
        Menu,Running,Pause,Fail,Success
    }
    enum WeekDay//枚举类型本质上是int类型,只是为了更方便阅读
    {
        Sun=10, Mon, tue, Wed, thu, Fri, Sat//把第一个值改成10,后面的值会递增1
        //每一个值都可以修改
    }
}

总结

函数和方法就是自己自定义一个方法方便在Main函数里实现某个功能。枚举类型就是自己创建一个类型并把我们想要放入的变量放在里面,方便后续使用。


http://www.niftyadmin.cn/n/5680882.html

相关文章

高度细化的SAGA模式实现:基于Spring Boot与RabbitMQ的跨服务事务

场景与技术栈 场景&#xff1a;电商系统中的订单创建流程&#xff0c;涉及订单服务&#xff08;Order Service&#xff09;、库存服务&#xff08;Inventory Service&#xff09;、支付服务&#xff08;Payment Service&#xff09;。 技术栈&#xff1a; Java 11 Spring Bo…

Redis的主要特点及运用场景

Redis的主要特点及运用场景 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的高性能键值对&#xff08;key-value&#xff09;数据库。它支持多种类型的数据结构&#xff0c;如字符串&#xff08;strings&#xff09;、散列&#xff08;hashes&…

elementui/plus灯下面的指示怎么改成圆圈或者隐藏

改成圆圈的步骤 改成没有indicator-position指示的位置/或者隐藏

从 Oracle 集群到单节点环境(详细记录一次数据迁移过程)之二:生产服务器的备份操作

从 Oracle 集群到单节点环境&#xff08;详细记录一次数据迁移过程&#xff09;之二&#xff1a;生产服务器的备份操作 目录 从 Oracle 集群到单节点环境&#xff08;详细记录一次数据迁移过程&#xff09;之二&#xff1a;生产服务器的备份操作一、创建 pfile 文件二、创建备份…

智能Ai语音机器人的应用价值有哪些?

随着时间的推移&#xff0c;人工智能的发展越来越成熟&#xff0c;智能时代也离人们越来越近&#xff0c;近几年人工智能越来越火爆&#xff0c;人工智能的应用已经开始渗透到各行各业&#xff0c;与生活交融&#xff0c;成为人们无法拒绝&#xff0c;无法失去的一个重要存在。…

速盾:高防cdn靠不靠谱?

高防CDN&#xff08;Content Delivery Network&#xff09;是一种通过分布式部署服务器&#xff0c;将网站的内容缓存在全球各地的服务&#xff0c;其目的是为了提高网站的访问速度和抗DDoS攻击的能力。然而&#xff0c;关于高防CDN是否靠谱的问题&#xff0c;需要综合考虑多个…

芝法酱学习笔记(0.5)——使用jenkins做自动打包

前言 上节讲了SpringBoot上的打包。但这些过程都是手动的&#xff0c;在实际的开发测试时&#xff0c;自动化的打包部署&#xff0c;可以大大提升团队开发的效率 一、去官网下载 1.1 官网安装命令 对于如何安装的问题&#xff0c;我向来推荐官网 wget -O /usr/share/keyri…

UNI-APP_iOS开发技巧之:跳转到TestFlight或者App Store

有的时候我们的应用可能需要上TestFlight或者App Store&#xff0c;更新升级就需要跳到TestFlight里面。方法如下&#xff1a; 跳转到TestFlight: itms-beta://itunes.apple.com/app/你的AppID 跳转到AppStore: itms-apps://itunes.apple.com/app/你的AppIDhttps://airp…