方法和函数
嘛叫方法和函数嘞?
指某个对象的行为
有什么用嘞?
减少重复的代码,提高代码的复用性
两者的区别是啥嘞?
方法一般不返回数据,而函数通常都返回数据。但一般不区分两者了,统一叫方法。
代码展示一下子呗?
方法:
public void Print()//viod表示不返回任何数据
{
MessageBox.Show("打印所有的数据");
}
函数:
public int GetCount()
{
return 100;
}
函数的参数
参数是啥嘞?
参数其实相当于一个值的副本。
传递副本的好处就是可以避免因误操作而影响了原值。缺陷就是会因复制而产生性能损耗。
另一个解释:函数“=sum(1,2,3)”,123就是sum函数的参数
参数的关键字是啥嘞?ref、out、params
ref是内部对外部的值进行改变,out则是内部为外部变量赋值。out一般用在函数有多个返回值的场所。
//引用参数(ref):ref在使用前需要先初始化变量的值,在方法体外先初始化
public static void RefMethod(ref int i)
{
i++;
}
//输出参数(out):out参数必须在方法体内初始化
public static void OutMethod(out int i)
{
i=0;
i++;
}
//可变参数(params):params后面必须跟数组,之后不允许跟任何其他参数,并且在方法声明中只允许一个params关键字
static int addi(params int[] values)
{
int sum=0;
foreach (int i in values)
{
sum=sum+i;
}
return sum;
}
//引用参数(ref):ref在使用前需要先初始化变量的值,在方法体外先初始化
public static void RefMethod(ref int i)
{
i++;
}
//输出参数(out):out参数必须在方法体内初始化
public static void OutMethod(out int i)
{
i=0;
i++;
}
//可变参数(params):params后面必须跟数组,之后不允许跟任何其他参数,并且在方法声明中只允许一个params关键字
static int addi(params int[] values)
{
int sum=0;
foreach (int i in values)
{
sum=sum+i;
}
return sum;
}
备注:函数中的参数可以是任意类型,但return语句返回的类型必须与函数定义中的类型一致,否则会提示编译错误
参数的传递是啥嘞?
两两组合,可得到四种传递方式:(1)按值传递值类型(2)按值传递引用类型(3)按引用传递值类型(4)按引用传递引用类型
大多参数都是按值传递的,也就是“复制一份”。可如果有了关键字ref和out,就是按引用传递的。
函数的返回值
返回值是啥嘞?
比如有一个求和函数:a+b,那其和的值就是返回值。为啥叫返回值嘞?可以这样理解:你给计算机输入进去a,b,那计算机就会“返回”个和的值。
是不所有的函数都有返回值嘞?
非也。
可以这样理解:你去A地买东西,你如果买回东西来了,那东西就是返回值。当然了,你也可以不买东西,那也就是没有返回值。
备注:如果在函数定义中指定了返回的类型,则函数语句块中,必须包含一个return语句。如果返回判断中有多个条件,则每个条件都必须能够返回值。
使用return返回参数和使用ref返回参数有什么区别嘞?
return只是返回函数执行的结果,不改变参数值,ref是用来改变传递给函数的参数的值。通俗点,return回来的结果一般是一个新的对象,而ref是直接修改原有的已经在内存中的对象,不用重新实例化一个对象。
委托
啥是委托嘞?
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。
委托咋创建和调用嘞?
delegate关键字是为了安全地封装方法的类型
public delegate void OwnPrint(string text);//定义委托
public void Print(string message) //定义方法
{
MessageBox.Show(message);
}
OwnPrint myprint = Print; //委托方法
myprint("欢迎您到北京来")//实现调用
小结
可能有人会好奇,小编今天的“语风”咋变了嘞?悄悄告诉你,因为小编最近在追剧:《白鹿原》。有意思的不行嘞~感兴趣的可以去看看嘞~