C#基础之函数基础

函数基础与应用 - C# 编程指南 C#中,函数的定义由关键字 “void”、函数名、参数列表和函数体组成。函数的返回类型用关键字 “void” 表示,表示函数不返回任何值。");在上面的例子中,函数名是 “SayHello”,它接受一个字符串类型的参数 “name”。函数体内的代码会在函数被调用时执行。要调用函数,可以使用函数名加上参数列表的方式。上述代码将会输出 “Hello, John!本文介绍了C#函数基础知识,包括函数的定义和调用、函数的参数、函数的返回值以及函数的重载。 阅读详情

函数

在这里插入图片描述

1、函数基础

1、概念
函数(方法)
本质是一块具有名称的代码块
可以使用函数(方法)的名称来执行该代码块
函数(方法)是封装代码进行重复使用的一种机制

函数(方法)的主要作用
1、封装代码
2、提升代码复用率
3、抽象行为
2、函数位置
写在 class 或 struct
3、基本语法
static 返回类型 函数名(参数类型 参数名1,参数类型 参数名2){
    函数的代码逻辑
    return 返回值;
}
4、实际运用
1、无参无返回值函数
	static void SayHellow(){
    Console.WriteLine("你好,世界");
	}
	Console.WriteLine(SayHellow);
2、有参无返回值
    static void SayYourName(string name){
    Console.WriteLine("你的名字是:{0}",name);
	}
	string  str = "魔君"
	Console.WriteLine(str);
3、无参有返回值
    static string WhatYourName(string name){
    return "魔君";	
	}
	SayYourName(WhatYourName());
	string str = WhatYourName;
4、有参有返回值
    static int Sum(int a,int b){
    return a+b;
	}
	Console.WriteLine(Sum(3,5););
5、有参有多返回值
    static int[] Cal(int a, int b){
    int sum = a + b;
    int avg = sum /2;
    return new int[]{sum,avg};
	}
	int[] arr = Cal(6,8); 
	Console.WriteLine(arr[0]+" "+arr[1]);
5、return

return 可以提前结束函数逻辑,直接返回到函数外部

static void Speak(string str){
    if (str == "结束"){
        return;
    }
    Console.WriteLine(str);
}

2、ref 和 out

解决在函数内部改变外部传入的内容,里面变了,外面也要变

static void ChangeValue(int value){
    value = 3;
}
int a = 1;
ChangValue(a);
Console.WriteLine(a);
1、ref 和 out 使用
函数参数的修饰符
当出入的值类型参数在内部修改时,或者引用类型参数在内部重新声明时,外部的值会发生变化
    //ref
    static void ChangeValueRef(ref int value){
    	value = 3;
	}
	int a = 1;
	ChangeValueRef(ref a);
	Console.WriteLine(a);
	//out
	static void ChangeValueRef(out int value){
    	value = 3;
	}
	int a = 1;
	ChangeValueRef(out a);
	Console.WriteLine(a);
2、区别

1、ref 传入的变量必须初始化, out不用

ref传入的变量必须初始化,但是在内部,可改可不改

2、out传入的变量必须在内部赋值,ref不用

out传入的变量不用初始化,但是在内部,必须赋值

思考 登录
static bool IsCom(string z, string mi, ref string info)
{
    if (z == "admin")
    {
        if (mi == "000")
        {
            info = "登录成功";
        }
        else
        {
            info = "密码错误";
            return false;
        }
    }
    else
    {
        info = "账户错误";
        return false;
    }
    return true;
}
Console.WriteLine("请输入账户");
string zhang = Console.ReadLine();
Console.WriteLine("请输入密码");
string miMa = Console.ReadLine();
string infos = "";
while (!IsCom(zhang, miMa, ref infos))
{
    Console.WriteLine(infos); 
    Console.WriteLine("请输入账户");
    zhang = Console.ReadLine(); 
    Console.WriteLine("请输入密码");
     miMa = Console.ReadLine();
}
Console.WriteLine(infos);

3、变长参数和参数默认值

1、变长参数
static int Sum(params int[] arr){
    int sum = 0;
    for(int i=0; i < arr.Length; i++){
        sum += arr[i];
    }
    return sum;
}
1、params关键字后面必为数组
2、数组的类型可以是任意的类型
3、函数参数可以有别的参数和params关键字修饰的参数
4、函数参数中只能最多出现一个params关键字,且一定是最后一组参数
2、参数默认值
static void Speak(string str = "无话可说"){
    Console.WriteLine(str);
}
Speak();
如果要混用,可选参数必须写在普通参数后面

4、函数重载

概念:同一语句块中,函数名相同,参数不同,返回值无关

作用:用来处理不同参数同一类型的逻辑处理

1、重载和返回值类型无关,只和参数类型,个数,顺序有关
2、调用时程序会自己根据传入的参数类型判断使用哪个重载
static int Cal(int a, int b){
    return a+b;
}
static int Cal(int a, int b, int c){
    return a+b+C;
}
static float Cal(float a, float b){
    return a+b;
}
static float Cal(int a, float b){
    return a+b;
}
static float Cal(float a, int b){
    return a+b;
}
static float Cal(ref float a, int b){
    return a+b;
}

5、递归函数

让函数自己调用自己

必须有能够结束调用的条件

//递归方式输出0~10
static void Fun(int a){
    if(a > 10){
        return;
    }
    Console.WriteLine(a);
    ++a;
    Fun(a);
}
Fun(0);
思考1 阶乘
//传入一个值,递归求该值的阶乘,并返回
//    5!= 1 * 2 * 3 * 4 * 5
static int JieCheng(int a)
{
    Console.WriteLine(a);
    if (a == 1)
    {
        return 1;
    }
    return a * JieCheng(a-1);
}
Console.WriteLine(JieCheng(5));
思考2 阶乘相加
//使用递归求 1! + 2! +3! + 4! + ... + 10!
static int Fun1(int num)
{
    if (num == 1)
    {
        return 1;
    }
    return num * Fun1(num - 1);
}
static int Fun2(int num)
{
    Console.WriteLine(num);
    if (num == 1)
    {
        return 1;
    }
    return Fun1(num) + Fun2(num - 1);
}
Console.WriteLine(Fun2(10));
思考3 竹竿减半
//一根竹竿长100m,每天砍掉一半,求第十天它的长度是多少(从第0天开始)
static void Fun(float length, int day = 0)
{
    if (day == 10)
    {
        Console.WriteLine("第十天竹竿长{0}米", length);
        return;
    }
    length /= 2;
    ++day;
    Fun(length, day);
}
Fun(100);
思考4 递归循环输出
static bool Fun(int num)
{
    Console.WriteLine(num);
    return num == 10 || Fun(num + 1);
}
Fun(1);
C#编程函数全书:基础到高级功能指南 C#中,函数是一组组织好的、可重复使用的代码块,用于执行单一或相关联的任务。函数可以包含一系列的语句,它们是逻辑处理的基本单位。每当我们需要执行这些语句时,只需调用相应的函数即可。函数定义包括几个关键部分:返回类型、函数名、参数列表、函数体。返回类型指示函数将返回什么类型的数据,函数名应能反映其功能,参数列表定义函数输入的变量类型,函数体包含实现函数功能的代码块。// 示例:定义一个计算两个数之和的函数泛型在C#中是支持类型安全的一种机制。它们允许你在不指定具体数据类型的情况下编写代码。 阅读详情

相关推荐

C#函数(方法)详解

一、语法介绍1、为什么使用函数2、函数体介绍3、函数的定义和使用4、带参和无参5、参数不确定长度的方法6、结构函数7、函数的重载(Overload):函数名相同,参数不同,返回值无所谓二、语法实践using System; namespace 函数定义使用 { /// &lt;summary&gt; /// 结构体函数 /// &lt;/summary&gt; s...

我还是个孩子的博客 1万+

C#笔记——函数

函数又称方法,本质是一个具有名称的代码块。可以通过函数的名称去执行该代码块。函数是方便对代码重复使用的一种机制。ref变长参数函数的传入参数,他可以为任意数量的同种类型参数的集合。关键字为params,使用时后面必须修饰一个数组而非一个元素。params关键字修饰的参数数组必须位于最后一个参数的位置,在她的后面不允许有其他任何参数。在实际应用中,存在某些情况下逻辑处理必须要用到某参数,但实际调用时不一定会包含该参数的传入,这时可以使用可选参数。

qq_62597193的博客 1687

C# 函数介绍及使用方法

一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。 在C#语言中,子程序的作用是由一个主函数和若干个函数构成。由主函数调用其它函数,其它函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数,以减少重复编...

weixin_30399871的博客 1322

C# 中的函数与方法

C# 中,函数是一段代码块,用于执行特定的任务或操作。函数也被称为方法(method),它们是面向对象编程(OOP)的基本构建块之一。函数使代码模块化,提高代码的可读性、可维护性和重用性。

微软技术分享 7168

C# 编程 常用函数

C#基础

weixin_42294402的博客 1597

C#基础语法(数组和函数

简介:本文讲解C#基础语法里面的数组和函数功能。

jakelihua 1507

C# 总结 常用的基础函数

在当前时间加一定时间(dataType 可以是年、月、天、小时、分钟、秒和毫秒)是否是同一时间 (dataType 可以是年、月、天、小时、分钟、秒和毫秒)获取当前时间的年、月、天、小时、分钟、秒或者毫秒。三元判段 ,相当于 it.id==1?方法只能用在表达式中,如果非表达式中用。字符串比大小,字符串比较,字符串对比。计算时间差( 已知MSSQL支持)天,小的时间在前面,大的时间在后面。,特殊类型适合用这个兼容性好。五、格式转换截取替换等。六、BOOL返回值函数。、向上取整和向下取整。

huang714的专栏 216

C#基础-函数

【代码】C#基础-函数

qq_57570525的博客 138

C#函数基础

类和结构体中,也可定义在某些无名函数中。

weixin_52064987的博客 239

C#函数基础应用

C#函数基础应用 函数之前的知识回顾数据类型--变量常量--运算符表达式--语句(顺序,分支,循环)--数组--函数 程序里的函数:能完成一个相对独立功能的代码模块。数学里的函数:高度抽象。 函数四要素:函数名,输入,输出,加工 函数定义: [static] 返回类型 函数名(输入参数列表){ //函数体——加工}函数调用:函数名(参数); ——适合于调用无返回值的函数数据类型 变量...

weixin_30376509的博客 154

C#-函数基础知识

某些任务通常需要在一个程序中的多个位置执行(e.g.查找数组中的最大值),此时可以把几乎相同的代码按照需要放在应用程序中,但若要进行小改动,则需要修改多个代码块,很不方便。函数则可以规避上述问题。函数:1.可提供在应用程序中的任何一处执行的代码块2.可将相关代码组合在一起,提高代码的可读性(应用程序变短了)3.可创建多用途的代码,让它们对不同的数据执行相同的操作4.可采用参数形式为函数提供信息,以返回值的形式得到函数的结果举例。

qq_44160904的博客 418

Unity编程之C#基础篇-----析构函数

【代码】Unity编程之C#基础篇-----析构函数

qq_39952204的博客 263

C#基础之构造函数

构造函数基础 我们构造对象的时候,对象的初始化过程是自动完成的,但是在初始化对象的过程中有的时候需要做一些额外的工作,例如需要初始化对象存储的数据,构造函数就是用于初始化数据的函数。 声明基本的构造函数的语法就是声明一个和所在类同名的方法,但是该方法没有返回类型。 public class MyClass{ public MyClass() { 这个构造函数函数体 } } 当我们使用new关键字创建类的时候,就会调用构造方法。 我们一般会使用构造方法进

weixin_43899724的博客 667

Unity基础C#基础篇笔记4:函数基础,ref,out

Unity基础C#基础篇笔记4:函数基础,ref,out函数基础1.函数概念2.函数写在哪里3.基本语法4.实际运用5.关于return6.练习ref和out1.学习ref和out的原因2.ref和out的使用3.ref和out的区别3.习题 函数基础 1.函数概念 函数(方法) 本质是一块具有名称的代码块 可以使用函数(方法)的名称来执行该代码块 函数(方法)是封装代码进行重复使用的一种机制 函数(方法)的主要作用 1.封装代码 2.提开代码复用率(少写点代码) 3.抽象行为 右键->转到定

qq_42481369的博客 1080

一个C#函数学完C#图形图像编程基础

老师说C#主要用于1、winform开发2、网络3、驱动在图形图像处理上用的比较少,不过书里有图形图像编程这一章节,为了系统的学完C#编程基础,以及为了能够更熟悉C#的特性,再加上今天晚上闲的没事,就把这一章再看了一遍。将今天晚上的知识整理了一下,通过一个函数将图形图像的知识串了起来。一、GDI+的介绍GDI+是C#中用于绘图操作的一个接口,GDI+是GDI的后续版本,GDI+包含了大约60个类,...

廖香立的博客 3796

C#基础——构造函数、析构函数

构造函数在调用的时候会分配一部分内存,这块内存被放在了堆上,c#内存回收机制属于自动回收,原则意义上来讲不需要手动释放,但是如果能够结合良好的编码习惯,可以搭配类似于析构函数之类的方法,让内存释放更高效。构造函数是用于对象的初始化,而普通函数主要用于对象的操作和行为。构造函数在创建对象时自动调用,而普通函数需要手动调用。

一个不掉头发的资深小白 976
上一篇: C#基础之值类型和引用类型
下一篇: C#基础之结构体
Angle灬魔君
博客等级 码龄7年 323粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值