0,小复习
完整的写法:
namespace:包。
class:类。
Main:主方法。
namespace a {
class B {
static void Main(string[] args) {
Console.WriteLine("你好,世界!");
}
}
}
1,简单使用
public:外部可以访问。
static:不需要通过实例访问。
public static 返回类型 方法名 ( 参数列表 ){
//xxx
}
举例:int作加法。
namespace a {
class B {
static void Main(string[] args) {
int c = add(111, 333);
Console.WriteLine(c);
}
static int add(int a, int b) {
return a + b;
}
}
}
效果:
2,out参数
out参数是另一种返回值的方式。
out加在参数上,方法体必须要对该参数进行赋值。
out参数可以有多个。
namespace a {
class B {
static void Main(string[] args) {
int c = 0;
add(111, 333, out c);
Console.WriteLine(c);
}
static void add(int a, int b, out int c) {
c = a + b;
}
}
}
效果:
3,ref参数
默认情况下,参数是值传递:
namespace a {
class B {
static void Main(string[] args) {
int a = 111;
add(a);
Console.WriteLine(a);
}
static void add(int a) {
a++;
}
}
}
效果:没有变化。
ref修饰之后,会变成引用传递。
namespace a {
class B {
static void Main(string[] args) {
int a = 111;
add(ref a);
Console.WriteLine(a);
}
static void add(ref int a) {
a++;
}
}
}
效果:加一。
此外,当参数是引用类型的值时,默认也是引用传递:
namespace a {
class B {
static void Main(string[] args) {
int[] a = {
111 };
add(a);
Console.WriteLine(a[0]);
}
static void add(int[] a) {
a[0]++;
}
}
}
效果:
4,params参数
可变参数,传入的时候会当作数组。
只能放在最后,只能出现一次。
namespace a {
class B {
static void Main(string[] args) {
say(1, 2, 3, 4);
}
static void say(params int[] a) {
for (int i = 0; i < a.Length; i++) {
Console.WriteLine(a[i]);
}
}
}
}
效果:
5,方法的重载
同名不同参。(参数个数,参数类型,参数位置)
下面这四个方法就是重载。
static int add(int a, int b) {
return a + b;
}
static double add(double a, double b) {
return a + b;
}
static double add(int a, double b) {
return a + b;
}
static double add(double a, int b) {
return a + b;
}
返回值类型不影响。
下面这个会报错。
static int add(int a, int b) {
return a + b;
}
static double add(int a, int b) {
return a + b;
}