方法重载是实现多态的常见方法。它是一种以多种形式重新定义功能的能力。用户可以通过在共享相同名称的类中定义两个或多个函数来实现函数重载。 C#可以区分以下方法不同的方法签名。即, 这些方法可以具有相同的名称, 但在同一类中具有不同的参数列表(即, 参数的数量, 参数的顺序和参数的数据类型)。
- 根据作为参数传递给方法的参数的数量和类型来区分重载的方法。
- 你不能定义多个具有相同名称, 顺序和参数类型的方法。这将是编译器错误。
- 区分重载方法时, 编译器不考虑返回类型。但是你不能声明具有相同签名和不同返回类型的两个方法。它将引发编译时错误。如果这两种方法具有相同的参数类型, 但返回类型不同, 则不可能。
如果我们需要以不同的方式(即针对不同的输入)执行相同类型的操作。在下面描述的示例中, 我们对不同的输入进行加法运算。很难为单个动作找到许多不同的有意义的名称。
进行重载方法的不同方法-
方法重载可以通过更改来完成:
- 两种方法中的参数数量。
- 方法的参数的数据类型。
- 方法的参数顺序。
// C# program to demonstrate the function
// overloading by changing the Number
// of parameters
using System;
class GFG {// adding two integer values.
public int Add( int a, int b)
{
int sum = a + b;
return sum;
}// adding three integer values.
public int Add( int a, int b, int c)
{
int sum = a + b + c;
return sum;
}// Main Method
public static void Main(String[] args)
{// Creating Object
GFG ob = new GFG();
int sum1 = ob.Add(1, 2);
Console.WriteLine( "sum of the two "
+ "integer value : " + sum1);
int sum2 = ob.Add(1, 2, 3);
Console.WriteLine( "sum of the three "
+ "integer value : " + sum2);
}
}
输出如下:
sum of the two integer value : 3sum of the three integer value : 6
通过更改参数的数据类型
// C# program to demonstrate the function
// overloading by changing the Data types
//of the parameters
using System;
class GFG {// adding three integer values.
public int Add( int a, int b, int c)
{
int sum = a + b + c;
return sum;
}// adding three double values.
public double Add( double a, double b, double c)
{
double sum = a + b + c;
return sum;
}// Main Method
public static void Main(String[] args)
{// Creating Object
GFG ob = new GFG();
int sum2 = ob.Add(1, 2, 3);
Console.WriteLine( "sum of the three "
+ "integer value : " + sum2);
double sum3 = ob.Add(1.0, 2.0, 3.0);
Console.WriteLine( "sum of the three "
+ "double value : " + sum3);
}
}
输出如下:
sum of the three integer value : 6sum of the three double value : 6
通过更改参数的顺序
// C# program to demonstrate the function
// overloading by changing the
// Order of the parameters
using System;
class GFG {// Method
public void Identity(String name, int id)
{Console.WriteLine( "Name : " + name + ", "
+ "Id : " + id);
}// Method
public void Identity( int id, String name)
{Console.WriteLine( "Name : " + name + ", "
+ "Id : " + id);
}// Main Method
public static void Main(String[] args)
{// Creating Object
GFG obj = new GFG();
obj.Identity( "Akku" , 1);
obj.Identity( "Abby" , 2);
}
}
输出如下:
Name : Akku, Id : 1Name : Abby, Id : 2
当方法签名相同且返回类型不同时会发生什么?
编译器将给出错误, 因为仅返回值不足以使编译器找出必须调用的函数。仅当两个方法都具有不同的参数类型(因此, 它们具有不同的签名)时, 方法重载才是可能的。
例子:
// C# program to show error when method signature
// is the same and the return type is different.
using System;
class GFG {// adding two integer value.
public int Add( int a, int b)
{int sum = a + b;
return sum;
}// adding three integer value.
public double Add( int a, int b)
{
double sum = a + b + 0.0;
return sum;
}// Main Method
public static void Main(String[] args)
{// Creating Object
GFG ob = new GFG();
int sum1 = ob.Add(1, 2);
Console.WriteLine( "sum of the two "
+ "integer value :" + sum1);
int sum2 = ob.Add(1, 2);
Console.WriteLine( "sum of the three "
+ "integer value :" + sum2);
}
}
编译时错误:
【C#|方法重载详细介绍】prog.cs(15, 19):错误CS0111:已经定义了成员GFG.Add(int, int)。重命名此成员或使用不同的参数类型prog.cs(7, 16):(与先前错误相关的符号位置)
推荐阅读
- 算法设计(以给定大小的组反向链表|套装2)
- PHP | date_date_set()函数用法介绍
- Linux C编程详解(进程原理分析、文件描述符和文件记录表、文件句柄和文件原理)
- 网络工程师必备,网络基础技术相关命令详细讲解
- 网络拓扑是什么(计算机网络拓扑结构详解)
- 计算机网络简明教程(二)(网络和主机之间的通信方式是什么())
- 深入操作系统设计原理(一)(操作系统是什么(学习操作系统到底是学什么?))
- 计算机网络简明教程(一)(网络介绍和作用、因特网综合概述)
- 什么是OSI七层模型和网络五层模型(有什么功能或作用? – 深入浅出HTTP原理)