【C#视频】方法重载、函数重载、传值

简介: 【C#视频】方法重载、函数重载、传值

重载

重载,简单的来说就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

重载的定义

函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同

重载是可使函数、运算符等处理不同类型数据或接受不同个数的参数的一种方法

方法重载

是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数

具体规范

  • 方法名一定要相同
  • 方法的参数表必须不同,包括参数的类型或个数,以此分区不同的方法体
  • 如果参数个数不同,就不管它的参数类型了
  • 如果参数个数相同,那么参数的类型必须不同
  • 方法的返回类型、修饰符可以相同,也可以不同

举例

1.         static void Main(string[]args)
2.         {
3.             AddNumber(1, 2);
4. //只打半个括号,可以看到,总共显示3个方法,
5. //依据每一个方法里的变量类型不同,输入
6. 
7.         }
8. //返回值类型为int,参数的个数为2,参数类型都为int类型
9.         public static int AddNumber(int num1,int num2)
10.         {
11. return num1 + num2;
12.         }
13. 
14. //返回值类型为double,参数的个数为2,参数类型都为double类型
15.         public static double AddNumber(double num1, double num2)
16.         {
17. return num1 + num2;
18.         }
19. 
20. //返回值类型为double,参数的个数为2,参数类型为double类型和int类型
21.         public static double AddNumber(double num1, int num2)
22.         {
23. return num1 + num2;
24.         }

返回一个数组

1.    static void Main(string[] args)
2.         {
3. //方法 求和 最大值 最小值
4. 
5.             int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };//定义nums数组并赋值
6.             int[] arrayNumbers = ArraySumAndMaxOrMin(nums);//调用ArraySumAndMaxOrMin的方法
7. 
8.             Console.WriteLine("最大值为{0}",arrayNumbers[0]);
9.             Console.WriteLine("最小值为{0}",arrayNumbers[1]);
10.             Console.WriteLine("和为{0}",arrayNumbers[2]);
11. 
12.             Console.ReadKey();
13. //返回多个值,不同类型
14.         }
15.         public static int[]ArraySumAndMaxOrMin(int[] numbers)
16.         {
17.             int[] array = new int[3];//声明数组
18.             array[0] = int.MinValue;
19.             array[1] = int.MaxValue;
20.             array[2] = 0;
21. 
22. for (int i = 0; i < numbers.Length ; i++)
23.             {
24. if (numbers[i] > array[0])//如果数组数值小于最小值
25.                 {
26.                     array[0] = numbers[i];//将数组数值赋给min变量
27.                 }
28. if (numbers[i]<array[1])//如果数组数值大于最大值
29.                 {
30.                     array[1] = numbers[i];//将数组数值赋给max变量
31.                 }
32.                 array[2] += numbers[i];//求和
33. 
34.             }
35. return array;
36.         }

函数重载

就是有多个参数不同的构造函数

具体规范

构造函数重载:是用来创建对象的特殊方法的,方法名和类型一样,没有返回值,连void都不用

  • 构造函数可以有参数,new对象的时候传递参数即可
  • 如果不指定构造函数,则类有一个默认的无参数构造函数
  • 如果指定了构造函数,则不再有默认的无参数构造函数
  • 如果需要无参数的构造函数,则需要自己来写

举例

1.    public Person(string name,char gender ,int age)
2.         {//有参数的构造函数的出现会将原来默认的无参数的构造函数干掉。
3. this._name = name;
4. this._age = age;
5. this._gender = gender;
6.         }
7. //如果此时此刻还想用到无参数的构造函数,那么就必须
8. //构造函数的重载
9. public Person()
10.         {
11.         }

out返回值

1.    static void Main(string[] args)
2.         {
3.             int number1 = 10;//定义变量
4. 
5. //AddNumber的参数number1所采用的值是从方法中传过来的
6.             int sum = AddNumber(out number1);
7. 
8. //如果方法的参数用out修饰了,那么这个参数必须在方法里进行赋值
9. //变量前加out,是把方法里的值,传到方法外面去了
10.             Console.WriteLine(number1);//所以此刻的number1的值为100
11.             Console.WriteLine(sum);//而返回的总和为120
12.             Console.ReadKey();
13.         }
14.         public static int AddNumber(out int num1)
15.         {
16.             num1 = 100;//定义变量
17. return num1 + 20;//返回100+20
18.         }

有参数不加out,则加out的参数必须在方法里赋初值,来加out的参数可以不再方法里赋初值

1.    static void Main(string[]args)
2.         {
3.             int num1;//声明变量
4.             int num2 = 80;//给变量赋初值,num2未加out,可以不再方法里赋初值
5.             int numSum = Show(out num1, num2);//调用方法
6. 
7.             Console.WriteLine(num1);
8.             Console.WriteLine(num2);
9.             Console.ReadKey();
10. //out修饰方法的参数了,在方法外面,可以不给这个参数赋值,但是在方法里面必须给这个out
11. //修饰符的参数赋初值,另外,参数加out,是把这个方法中的参数的值传到方法外面去了
12.         }
13.         public static int Show(out int number1,int number2)
14.         {
15. number1 = 90;
16. return number1 + 10;
17.         }

ref传值

1.        static void Main(string[] args)
2.         {
3.             int number1 = 10;//给变量赋初值
4.             int number2 = 20;//给变量赋初值
5. 
6.             int sum = Show(ref number1, ref number2);//调用方法
7. 
8.             Console.WriteLine("{0},{1},{2}", number1, number2, sum);  
9.             Console.ReadKey();
10. //ref用的时候必须要给这个变量赋初值,和out有区别,out可以把方法里的值传出去
11. //ref可以把值传到方法里,又可以把值传到方法外
12.         }
13.         public static int Show(ref int num1, ref int num2)
14.         {
15.             num1 = 100;
16.             num2 = 200;
17. return num1 + num2;
18.         }


相关文章
|
7月前
|
存储 监控 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C#)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C#)
72 0
|
4月前
|
数据采集 存储 C#
C# 爬虫技术:京东视频内容抓取的实战案例分析
C# 爬虫技术:京东视频内容抓取的实战案例分析
|
7月前
|
数据采集 API C#
网页解析高手:C#和HtmlAgilityPack教你下载视频
使用C#和HtmlAgilityPack解析小红书网页,下载其视频内容。文章涵盖了解析网页、获取视频链接、C#实现、HtmlAgilityPack简化解析、代理IP确保下载稳定及多线程提高下载效率。提供的代码示例展示了如何设置代理和多线程下载视频。实验结果显示,该方法能有效、高效地下载小红书视频。
140 5
网页解析高手:C#和HtmlAgilityPack教你下载视频
|
7月前
|
存储 C#
c#视频总结(二)
c#视频总结(二)
50 1
|
监控 C# C++
VS+C#+WPF多线程视频摄像头播放器监控
VS+C#+WPF多线程视频摄像头播放器监控
347 0
VS+C#+WPF多线程视频摄像头播放器监控
|
7月前
|
C#
C#视频总结(三)
C#视频总结(三)
31 0
|
7月前
|
C#
c#视频总结(一)
c#视频总结(一)
31 0
|
7月前
|
存储 C#
C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析
方法是一段代码,只有在调用时才会运行。 您可以将数据(称为参数)传递给方法。 方法用于执行某些操作,也被称为函数。 为什么使用方法?为了重用代码:定义一次代码,然后多次使用。
149 0
|
数据采集 开发框架 前端开发
使用C#和HtmlAgilityPack打造强大的Snapchat视频爬虫
Snapchat作为一款备受欢迎的社交媒体应用,允许用户分享照片和视频。然而,由于其特有的内容自动消失特性,爬虫开发面临一些挑战。本文将详细介绍如何巧妙运用C#和HtmlAgilityPack库,构建一个高效的Snapchat视频爬虫。该爬虫能够从Snapchat网页版中提取视频链接,并将其下载保存到本地。为了提升爬虫的效率和可靠性,我们将使用代理IP技术和多线程技术,以规避Snapchat的反爬机制。
|
监控 安全 算法
Baumer工业相机堡盟相机如何使用BGAPI SDK和Opencv联动实现图像转换成视频(C#)
Baumer工业相机堡盟相机如何使用BGAPI SDK和Opencv联动实现图像转换成视频(C#)
124 0