网站的ftp账号和密码,咋做黄页网站,用dede做网站去掉版权,域名怎么解析到网站前言
前面我们已经完成了ref和out补充知识点的学习#xff0c;以及函数参数相关的学习#xff0c;今天便再次为函数补充一个知识点#xff1a;函数重载。
函数重载是指在同一个作用域中#xff0c;可以有多个同名函数#xff0c;但参数列表不同。它的发展可以追溯到早期…前言
前面我们已经完成了ref和out补充知识点的学习以及函数参数相关的学习今天便再次为函数补充一个知识点函数重载。
函数重载是指在同一个作用域中可以有多个同名函数但参数列表不同。它的发展可以追溯到早期的编程语言。
在早期的编程语言中函数重载并不被支持。如果需要定义多个功能相似但参数不同的函数需要为每一个函数提供不同的名称。这样会导致代码冗余可读性降低。
随着编程语言的发展函数重载开始得到支持。C是第一个支持函数重载的编程语言它的发展历程对函数重载的发展有重要影响。
C的函数重载使得程序员可以使用相同的函数名来处理不同类型和数量的参数从而提高了代码的可读性和可维护性。编译器会根据传递给函数的参数类型和数量来选择合适的函数进行调用。
随着时间的推移函数重载在其他编程语言中也得到了支持。Java、C#、Python等主流编程语言都支持函数重载。
基本概念
在同一语句块中函数名相同参数数量不同类型顺序不同
最基本的例子其实你可以点进console里鼠标放到console这个方法处然后按f12可以看到它内部的方法构成你会发现它本身也有函数重载。
以下是博主在console里截屏到的一些重载的方法。 作用
命名一组类似的函数减少函数的数量避免命名空间的污染提升程序的可读性
实例
重载和返回类型无关又和参数类型个数顺序有关调用时程序会自己根据传入的参数类型判断使哪一个
参数数量不同
class Program
{static void Main(string[] args){int result1 Add(1, 2);int result2 Add(1, 2, 3);Console.WriteLine(Result 1: result1); // 输出3Console.WriteLine(Result 2: result2); // 输出6Console.ReadLine();}static int Add(int num1, int num2){return num1 num2;}static int Add(int num1, int num2, int num3){return num1 num2 num3;}
}
以上这个例子实现了Add方法的重载可以看到我们实现了多个数的相加不过这个例子有点不妥当因为真正要做到无限相加其实我们有其他的方法实现不过这个就留给你去思考了。
参数类型不同
using System;class Program
{static void Main(string[] args){int num1 5;float num2 3.5f;string str Hello, world!;MyFunction(num1);MyFunction(num2);MyFunction(str);Console.ReadLine();}static void MyFunction(int num){Console.WriteLine(You entered an integer: num);}static void MyFunction(float num){Console.WriteLine(You entered a float: num);}static void MyFunction(string str){Console.WriteLine(You entered a string: str);}
}
以上例子是实现了一个参数判断的方法我们也可以直观感受到传不同参数系统的自动调用建议你自己去实践一下。
参数数量相同但是顺序不同
using System;public class Speaker
{public void Speak(string message){Console.WriteLine(我说 message);}public void Speak(string message, string language){Console.WriteLine(我用 language 说 message);}public void Speak(int times, string message){Console.WriteLine(我重复 times 次说 message);}public void Speak(string message, int times){Console.WriteLine(我说 message times 次);}
}public class Program
{public static void Main(string[] args){Speaker speaker new Speaker();speaker.Speak(你好);speaker.Speak(Hello!, English);speaker.Speak(3, 再见);speaker.Speak(Goodbye!, 2);}
}
以上例子实现一个说话方法的重载我们其实就能感受到有时候数量相同但是顺序不同在实际开发中有什么作用我们可能在某些使用上不用太在乎参数顺序就可以达到那个方法但是如果要开发一个如此的函数需要大量的重载如果只有两个参数只用写两种但是如果有三个参数就要写六种。
所以这大抵是方便后人的一种写法了。
ref和out
using System;class Program
{static void Main(string[] args){int a 5;int b 10;int result1 Add(a, b);Console.WriteLine(Addition Result: result1); // Output: 15Subtract(ref a, out b);Console.WriteLine(ab); // Output: 55double c 2.5;double d 3.5;double result3 Add(c, d);Console.WriteLine(Addition Result: result3); // Output: 6.0}static int Add(int num1, int num2){return num1 num2;}static double Add(double num1, double num2){return num1 num2;}static void Subtract(ref int num1, out int num2){num2 10;num1 - num2;}
}
以上这个例子其实只是想告诉大家ref和out修饰的变量其实完全可以当做一种新变量来看也是可以参与到函数重载当中的。
总结
我们通过这些例子的学习想毕你一定已经掌握了函数重载的相关内容我相信你只要稍加练习便能达到很熟练的程度。
不过不管知识点难或者简单还是那句话学习路上戒骄戒躁脚踏实地。
请期待我的下一篇博客