方法:是具名的语句序列。每个方法都有名称和主体。方法名应该是一个有意义的标识符。方法主体包含方法被调用时实际执行的语句。
1.创建方法
1.1.声明方法
语法:
returnType methodName( parameterList )
{
//这里添加方法主体语句
}
returnType(返回类型)是类型名称,指定方法返回的数据类型。可以是任何类型,如int或string。没有返回值则必须用关键字void
methodName(方法名)是调用方法时所用的名称。方法名和变量名遵循相同的标识符命名规则。
parameterList(参数列表)是可选的,描述了允许传给方法的数据的类型和名称。要像声明变量那样,先写类型名,再写参数名,参数之间以逗号隔开。
方法主体语句是调用方法时要执行的代码。必须放到大括号({})中
例如:
//带返回值
int add(int number1,int number2)
{
//方法主体语句
}
//不带返回值
void show(string str)
{
Console.WriteLine($"hi {str}");
}
1.2.从方法返回数据
如果希望方法返回数据(返回类型不是void),必须在方法内部写return语句。
例如:
int add(int number1,int number2)
{
return number1 + number2;
}
return通常放到方法尾部,因其导致方法结束,控制权返回调用方法的那个语句,return后的任何语句都不执行。
如果不希望方法返回数据(返回类型void),可利用return语句的一个变体立即从方法中退出。为此,请先写关键字return,紧跟一个分号。
例如:
void show(string str)
{
Console.WriteLine($"hi {str}");
return;
}
如果方法什么都不返回,甚至可以省略return语句,因为一旦执行到方法尾部的结束大括号“}”,方法就会自动结束。虽然经常这样写,但不是良好的编程风格。
1.3使用表达式主体方法
有的方法十分简单,就是执行单一任务或返回计算结果,不涉及任何额外逻辑。C#6允许以一种简化的形式写由单个表达式构成的方法。这种方法仍然可以获取参数并返回值,和以前见过的方法并无二致。以下代码是add和show方法的简化版本:
int add(int number1,int number2) => number1 + number2;
void showResult(string str) => Console.WriteLine($"hi {str}");
1.4调用方法
方法终极目的就是被调用,用方法名调用方法,指示它执行既定任务。
语法:
result = methodName(argumentList);
例如:
调用上面的add和show方法
sum = add(1,34);
show("你好");
2.使用作用域
2.1定义局部作用域
界定方法主体的大括号({})定义了方法作用域。方法主体中声明的任何变量都具有那个方法的作用域;方法结束,它们也随之消失。
局部变量:在方法作用域里声明的变量
例如:
void method()
{
int a;//局部变量
}
注意:不能在当前方法中使用其它方法里的局部变量
2.2定义类作用域
界定类主体大括号({})定义了类作用域。
字段:类里面定义的变量。和局部变量相反,可用字段在不同方法之间共享信息。
例如:
class Example
{
int number = 2;
void add()
{
number = 1;
int sum = 2+number;
}
void show()
{
Console.WriteLine($"{number}");
}
}
3.使用可选参数和具名参数
3.1定义可选参数
指定可选参数是在定义方法时使用赋值操作符为该参数提供默认值。以下optMethod方法的第一个参数是必须的,因其没有提供默认值,但第二个和第三个参数可选:
void optMethod(int first,double second = 0.0,string third = "Hello")
{
//…
}
可选参数只能放在必须参数之后。含可选参数的方法在调用方式上与其它方法无异。都是指定方法名,提供任何必须参数(实参)。区别在于,与可选参数对应的实参可以省略,方法运行时会为省略的实参使用默认值。下例第一个optMethod方法调用为三个参数都提供了值。第二个调用只提供了两个,对应第一个和第二个参数。方法运行时,第三个参数使用默认值“Hello”:
optMethod(99,123.45,"World");//全部三个参数都提供了实参
optMethod(100,54.321);//只为前两个参数提供了实参
3.2传递具名参数
C#还允许按名称指定参数。这样就可按照不同顺序传递实参。
例如:
optMethod(first : 99 , second : 123.45 , third : "World");
optMethod(first : 100 , second : 54.321);
注:利用具名参数,实参可按任意顺序传递,也可省略实参
4.方法的重载
语法:
方法名必须相同 [参数签名必须不同]
重载两个方法的返回值类型没有要求
访问权限没有要求
比如上面的add()和show()方法
int add(int a,int b)
{
return a+b;
}
int add(string a,string b)
{
return int.Parse(a)+int.Parse(b);
}
void show()
{
Console.WriteLine($"Hello!");
}
void show(string number)
{
Console.WriteLine($"{number}");
}
上面的add()和show()就是方法的重载,add()方法是参数个数相同,但参数类型不同,而show()方法则是参数个数不同
参考书籍:《Visual C#从入门]到精通》