-
C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析
C# Methods
方法是一段代码,只有在调用时才会运行。
您可以将数据(称为参数)传递给方法。
方法用于执行某些操作,也被称为函数。
为什么使用方法?为了重用代码:定义一次代码,然后多次使用。
创建一个方法
方法的定义以方法的名称开头,后跟括号()。C#提供了一些预定义的方法,您已经熟悉,例如 Main()
,但您也可以创建自己的方法来执行某些操作:
示例:
|
class Program |
|
{ |
|
static void MyMethod() |
|
{ |
|
// 要执行的代码 |
|
} |
|
} |
示例解释
-
MyMethod()
是方法的名称。 -
static
表示该方法属于Program
类而不是Program
类的对象 -
void
表示该方法没有返回值 - 注意:在 C# 中,以大写字母开头的命名方法是一种良好的实践,因为它使代码更易于阅读。
调用一个方法
要调用(执行)一个方法,请写上方法的名称,后跟两个括号()和一个分号;
在以下示例中,当调用 MyMethod()
时,它用于打印一个文本(操作):
示例 在 Main()
中,调用 MyMethod()
方法:
|
static void MyMethod() |
|
{ |
|
Console.WriteLine("I just got executed!"); |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
MyMethod(); |
|
} |
|
|
|
// 输出 "I just got executed!" |
一个方法可以被多次调用:
示例
|
static void MyMethod() |
|
{ |
|
Console.WriteLine("I just got executed!"); |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
MyMethod(); |
|
MyMethod(); |
|
MyMethod(); |
|
} |
|
|
|
// I just got executed! |
|
// I just got executed! |
|
// I just got executed! |
C# Method Parameters
参数和实参
信息可以作为参数传递给方法。参数在方法内部充当变量。
它们在方法名称之后指定,在括号内部。您可以添加任意数量的参数,只需用逗号分隔即可。
以下示例有一个以字符串 fname
为参数的方法。当调用该方法时,我们传递一个名字,该名字在方法内部用于打印全名:
示例:
|
static void MyMethod(string fname) |
|
{ |
|
Console.WriteLine(fname + " Refsnes"); |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
MyMethod("Liam"); |
|
MyMethod("Jenny"); |
|
MyMethod("Anja"); |
|
} |
|
|
|
// 输出 |
|
// Liam Refsnes |
|
// Jenny Refsnes |
|
// Anja Refsnes |
当将参数传递给方法时,它被称为实参。因此,从上面的示例中可以看出:fname
是一个参数,而 Liam
、Jenny
和 Anja
是实参。
多个参数
您可以有任意数量的参数,只需用逗号分隔即可:
示例
|
static void MyMethod(string fname, int age) |
|
{ |
|
Console.WriteLine(fname + " is " + age); |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
MyMethod("Liam", 5); |
|
MyMethod("Jenny", 8); |
|
MyMethod("Anja", 31); |
|
} |
|
|
|
// 输出 |
|
// Liam is 5 |
|
// Jenny is 8 |
|
// Anja is 31 |
C# Default Parameter Value
默认参数值
您还可以使用默认参数值,通过使用等号(=)。
如果我们调用该方法而没有提供实参,则它将使用默认值("Norway"):
示例:
|
static void MyMethod(string country = "Norway") |
|
{ |
|
Console.WriteLine(country); |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
MyMethod("Sweden"); |
|
MyMethod("India"); |
|
MyMethod(); |
|
MyMethod("USA"); |
|
} |
|
|
|
// 输出 |
|
// Sweden |
|
// India |
|
// Norway |
|
// USA |
带有默认值的参数通常被称为"可选参数"。从上面的示例中,country
是一个可选参数,"Norway" 是默认值。
C# Return Values
返回值
在前一页中,我们在所有示例中使用了 void
关键字,该关键字表示该方法不应返回任何值。
如果您希望方法返回一个值,可以使用基本数据类型(如 int
或 double
)而不是 void
,并在方法内部使用 return
关键字:
示例:
|
static int MyMethod(int x) |
|
{ |
|
return 5 + x; |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
Console.WriteLine(MyMethod(3)); |
|
} |
|
|
|
// 输出 8 (5 + 3) |
此示例返回方法两个参数的和:
示例
|
static int MyMethod(int x, int y) |
|
{ |
|
return x + y; |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
Console.WriteLine(MyMethod(5, 3)); |
|
} |
|
|
|
// 输出 8 (5 + 3) |
您还可以将结果存储在变量中(建议使用,因为这样更易于阅读和维护):
示例
|
static int MyMethod(int x, int y) |
|
{ |
|
return x + y; |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
int z = MyMethod(5, 3); |
|
Console.WriteLine(z); |
|
} |
|
|
|
// 输出 8 (5 + 3) |
C# Named Arguments
也可以使用键:值语法发送参数。
这样,参数的顺序就不重要了:
示例:
|
static void MyMethod(string child1, string child2, string child3) |
|
{ |
|
Console.WriteLine("The youngest child is: " + child3); |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
MyMethod(child3: "John", child1: "Liam", child2: "Liam"); |
|
} |
|
|
|
// 输出 The youngest child is: John |
C# Method Overloading
通过方法重载,多个方法可以具有相同的名称但具有不同的参数:
示例:
|
int MyMethod(int x) |
|
float MyMethod(float x) |
|
double MyMethod(double x, double y) |
|
考虑以下示例,其中有两个添加不同类型数字的方法:
示例
|
static int PlusMethodInt(int x, int y) |
|
{ |
|
return x + y; |
|
} |
|
|
|
static double PlusMethodDouble(double x, double y) |
|
{ |
|
return x + y; |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
int myNum1 = PlusMethodInt(8, 5); |
|
double myNum2 = PlusMethodDouble(4.3, 6.26); |
|
Console.WriteLine("Int: " + myNum1); |
|
Console.WriteLine("Double: " + myNum2); |
|
} |
与定义两个应该执行相同操作的方法相比,最好重载一个方法。
在下面的示例中,我们对 PlusMethod 方法进行了重载,使其适用于 int 和 double:
示例
|
static int PlusMethod(int x, int y) |
|
{ |
|
return x + y; |
|
} |
|
|
|
static double PlusMethod(double x, double y) |
|
{ |
|
return x + y; |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
int myNum1 = PlusMethod(8, 5); |
|
double myNum2 = PlusMethod(4.3, 6.26); |
|
Console.WriteLine("Int: " + myNum1); |
|
Console.WriteLine("Double: " + myNum2); |
|
} |
注意:只要参数的数量和/或类型不同,多个方法可以具有相同的名称。
出处:https://www.cnblogs.com/xiaowange/p/17985853