1.函数
- 定义:
static returnType FunctionName(paramTyme paramName)
{
…
return returnValue;
}
其中static是关键字,注意函数名首字母大写。
函数与数组
- 数组参数:
函数调用时,需要自己手动构造数组
可直接在传参时定义数组。
如:
int sum = Sum(new int[] { 20, 20, 20, 20, 20 });
- 参数数组:
函数调用时,可以传递任意多个参数,编译器会将传递的参数构造成一个数组(即减少了一个创建数组的过程)。
格式:static void FunctionName(params arrayType[] arrayName)
两者示例如:
static void Fun1(int[] goddy1)
{
for (int i = 0; i < goddy1.Length; i++)
{
Console.Write(goddy1[i] + " ");
}
}
static void Fun2(params int[] goddy2)
{
for (int i = 0; i < goddy2.Length; i++)
{
Console.Write(goddy2[i] + " ");
}
}
若Main中
int[] goddyArray = { 20, 20, 20, 20, 20 };
Fun1(goddyArray);
Console.Write('\n');
Fun2(20, 20, 20, 20, 20, 201);
输出为
2.结构函数
把有关结构体的一些固定操作在结构体中定义为一个函数,这个函数可以通过结构体声明的变量调用,若这个函数有参数,则在调用的时候需要传参,且这个函数可以使用结构体中的属性。
例如:
struct Goddy
{
public string g;
public string o;
public string d;
public string Connect()
{
return g + o + d + "~!";
}
}
若
Goddy goddy;
goddy.g = "Have a ";
goddy.o = "nice~";
goddy.d = "day";
Console.WriteLine(goddy.Connect());
输出为
又例如:
struct Goddy
{
public int eq;
public int iq;
public int fabq;
public int TheTruth(int xq)
{
return (int)Math.Exp(xq);
}
}
若
Goddy goddy;
goddy.eq = 19;
goddy.iq = 20;
goddy.fabq = 2333;
goddy.fabq = goddy.TheTruth(goddy.eq)+ goddy.TheTruth(goddy.iq);
Console.WriteLine(goddy.fabq);
输出为
3.委托
委托(delegate)是一种存储函数引用的类型。它的定义指定了一个返回类型和一个参数列表,定义了委托之后,就可以声明该委托类型的变量,接着就可以把一个返回类型和参数列表跟委托一样的函数赋值给这个变量。
- 定义
如:public/private/protected delegate type name(type param1,type param2,...);
注意:委托的定义不需要函数体
注意:当给一个委托的变量赋值的时候,函数的返回值和参数列表必须跟委托一样,否则无法赋值。
例如:
//注意在命名空间下
public delegate string GodSSea(string sea);
//注意在类中
static string DreamPower(string sea)
{
return sea+" "+"yeah";
}
static string DreamHigh(string sea)
{
return sea+" "+"cool";
}
若
GodSSea sea;
sea = DreamPower;
Console.WriteLine(sea("Greatest"));
sea = DreamHigh;
Console.WriteLine(sea("Generous"));
输出为