C#视频方法重载函数重载传值
Posted 王思琪^
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#视频方法重载函数重载传值相关的知识,希望对你有一定的参考价值。
目录
重载
重载,简单的来说就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
重载的定义
函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同
重载是可使函数、运算符等处理不同类型数据或接受不同个数的参数的一种方法
方法重载
是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数
具体规范
- 方法名一定要相同
- 方法的参数表必须不同,包括参数的类型或个数,以此分区不同的方法体
- 如果参数个数不同,就不管它的参数类型了
- 如果参数个数相同,那么参数的类型必须不同
- 方法的返回类型、修饰符可以相同,也可以不同
举例
static void Main(string[]args)
{
AddNumber(1, 2);
//只打半个括号,可以看到,总共显示3个方法,
//依据每一个方法里的变量类型不同,输入
}
//返回值类型为int,参数的个数为2,参数类型都为int类型
public static int AddNumber(int num1,int num2)
{
return num1 + num2;
}
//返回值类型为double,参数的个数为2,参数类型都为double类型
public static double AddNumber(double num1, double num2)
{
return num1 + num2;
}
//返回值类型为double,参数的个数为2,参数类型为double类型和int类型
public static double AddNumber(double num1, int num2)
{
return num1 + num2;
}
返回一个数组
static void Main(string[] args)
{
//方法 求和 最大值 最小值
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };//定义nums数组并赋值
int[] arrayNumbers = ArraySumAndMaxOrMin(nums);//调用ArraySumAndMaxOrMin的方法
Console.WriteLine("最大值为{0}",arrayNumbers[0]);
Console.WriteLine("最小值为{0}",arrayNumbers[1]);
Console.WriteLine("和为{0}",arrayNumbers[2]);
Console.ReadKey();
//返回多个值,不同类型
}
public static int[]ArraySumAndMaxOrMin(int[] numbers)
{
int[] array = new int[3];//声明数组
array[0] = int.MinValue;
array[1] = int.MaxValue;
array[2] = 0;
for (int i = 0; i < numbers.Length ; i++)
{
if (numbers[i] > array[0])//如果数组数值小于最小值
{
array[0] = numbers[i];//将数组数值赋给min变量
}
if (numbers[i]<array[1])//如果数组数值大于最大值
{
array[1] = numbers[i];//将数组数值赋给max变量
}
array[2] += numbers[i];//求和
}
return array;
}
函数重载
就是有多个参数不同的构造函数
具体规范
构造函数重载:是用来创建对象的特殊方法的,方法名和类型一样,没有返回值,连void都不用
- 构造函数可以有参数,new对象的时候传递参数即可
- 如果不指定构造函数,则类有一个默认的无参数构造函数
- 如果指定了构造函数,则不再有默认的无参数构造函数
- 如果需要无参数的构造函数,则需要自己来写
举例
public Person(string name,char gender ,int age)
{//有参数的构造函数的出现会将原来默认的无参数的构造函数干掉。
this._name = name;
this._age = age;
this._gender = gender;
}
//如果此时此刻还想用到无参数的构造函数,那么就必须
//构造函数的重载
public Person()
{
}
out返回值
static void Main(string[] args)
{
int number1 = 10;//定义变量
//AddNumber的参数number1所采用的值是从方法中传过来的
int sum = AddNumber(out number1);
//如果方法的参数用out修饰了,那么这个参数必须在方法里进行赋值
//变量前加out,是把方法里的值,传到方法外面去了
Console.WriteLine(number1);//所以此刻的number1的值为100
Console.WriteLine(sum);//而返回的总和为120
Console.ReadKey();
}
public static int AddNumber(out int num1)
{
num1 = 100;//定义变量
return num1 + 20;//返回100+20
}
有参数不加out,则加out的参数必须在方法里赋初值,来加out的参数可以不再方法里赋初值
static void Main(string[]args)
{
int num1;//声明变量
int num2 = 80;//给变量赋初值,num2未加out,可以不再方法里赋初值
int numSum = Show(out num1, num2);//调用方法
Console.WriteLine(num1);
Console.WriteLine(num2);
Console.ReadKey();
//out修饰方法的参数了,在方法外面,可以不给这个参数赋值,但是在方法里面必须给这个out
//修饰符的参数赋初值,另外,参数加out,是把这个方法中的参数的值传到方法外面去了
}
public static int Show(out int number1,int number2)
{
number1 = 90;
return number1 + 10;
}
ref传值
static void Main(string[] args)
{
int number1 = 10;//给变量赋初值
int number2 = 20;//给变量赋初值
int sum = Show(ref number1, ref number2);//调用方法
Console.WriteLine("{0},{1},{2}", number1, number2, sum);
Console.ReadKey();
//ref用的时候必须要给这个变量赋初值,和out有区别,out可以把方法里的值传出去
//ref可以把值传到方法里,又可以把值传到方法外
}
public static int Show(ref int num1, ref int num2)
{
num1 = 100;
num2 = 200;
return num1 + num2;
}
以上是关于C#视频方法重载函数重载传值的主要内容,如果未能解决你的问题,请参考以下文章
替换函数 - 没有重载方法错误 C# - 试图删除字符串中的部分