返回值:
返回值类型:
任意的数据类型或者void
void表示该方法无返回值
方法有无返回值取决于方法的调用者是否需要返回值
参数:
参数分为两种:
形式参数:在编写方法的时候 预定义的参数
实际参数:在实际调用(使用)方法的时候 传入方法的参数
参数的类型:
形式参数:任意的数据类型 由方法编写者在预定义时限定
实际参数:任意的数据类型(和形式参数匹配)在方法的调用者中定义赋值
声明和传参:
形式参数:
public static void Area(int radius)//int radius即为形式参数
{
....
}
实际参数:
public static void Main (string[] args)
{
int r = 1;
Area(r); // r即为实际参数
}
// 传参的实质:用实际参数为形式参数赋值
int radius = r;
参数数组,通过关键字params定义参数数组。调用时可以传入个数不同的实参,具备很好的灵活性。
参数数组必须为参数列表的最后一个参数
参数列表之前可以设置其他的参数
示例:
//参数数组,关键字params
static void Add(params int[] p)
{
for(int i=0;i
数据类型按照大的分类:值类型和引用类型
值类型:基本数据类型、枚举和结构
引用类型:数组、类(String)、接口等
区别:
值类型相当于单独的一个箱子 直接操作箱子内的内容
引用类型相当于管理存储箱子的管理员
从以下几个方面来了解它们的具体区别:
1.声明时
值类型:新产生一个箱子 等待存储
引用类型:产生一个箱子管理员 等待一个箱子
2.被赋值
值类型:将新的内容直接放在箱子内
引用类型:和=右边的管理员一起管理同一个箱子
out 和 ref
函数参数默认是值传递的,也就是“复制一份”
out和ref传递的都是地址引用而不是值
1.形参和实参指向同一地址
2.始终保证形参和实参指向同一地址
区别:
out只出不进
ref又进又出
方法定义时的选择:
1.若方法只有一个返回值 选择使用返回值类型
例:
public static int ReturnInt()
{
return 1;
}
2.如果返回值多于1个 选择使用out
public static void ReturnInt(out int a,out int b)
{
//a、b赋初值
// a、b参与运算
}
调用时: int c;int d; ReturnInt(out c,out d);
3.如果需要直接将结果返回到某一个变量上 使用ref
public static void ChangeString(ref String s)
{
s = "000"+s;
}
调用时: String ss = "1"; ChangeString(ref ss);
参数传递需要明白的要点:
形参的修正对实参的影响程度
参数传递的方式:
形式参数 = 实际参数
参数的传递大致分为三类:
默认传参(无修饰传参)值传参
ref修饰传递参数 地址传参
out修饰传递参数 出参
传参规则:
根据形式参数类型的不同 对实际参数的影响程度也不相同
A:String、结构体、基本数据类型(整型、浮点、字符、布尔)、枚举
B:类、数组
默认传参(无修饰传参)值传参:
A:不影响实际参数
B:影响实际参数
ref修饰传递参数 地址传参:
A:影响实际参数
B:影响实际参数
out修饰传递参数 出参:
A:影响实际参数
B:影响实际参数
out修饰的参数 相当于在调用者中声明 在被调用者中赋值
结构体、基本数据类型(整型、浮点、字符、布尔)、枚举 统称值类型
String 数组 类 引用类型
命名参数, 是指通过命名参数(形参名)调用,实参顺序可以和形参不同。
语法:
Method(形参名字:实参值);
示例:
public static void Add(int a,int b)
{
int result = a + b;
}
public static void Main (string[] args)
{
int c = 10;
// 可以不按形式参数的顺序传入实际参数
Add(b:5,a:c);
}
含义:可选参数,是指给方法的特定参数指定默认值,在调用方法时可以省略掉这些参数。
注意事项:
(1)可选参数不能为参数列表的第1个参数,必须位于所有的必选参数之后(除非没有必选参数);
(2)可选参数必须指定一个默认值,且默认值必须是一个常量表达式,不能为变量;
(3)所有可选参数以后的参数都必须是可选参数。
(4)若要为可选参数传递新的值 请使用命名参数的语法
示例:
public static void Add(int a,int b=2)
{
int result = a + b;
}
public static void Main (string[] args)
{
int a = 10;
// 省略b实际参数的传递
Add(a);
// 也可以不省略 为b重新赋值
Add(a,b:5);
}