C# - 方法
方法是一段包含一组语句的代码块,这些语句共同完成一项任务。每个 C# 程序至少有一个名为 Main 的方法所在的 class。
要使用方法,您需要 −
- 定义方法
- 调用方法
在 C# 中定义方法
定义方法时,您基本上声明了其结构元素。在 C# 中定义方法的语法如下 −
语法
<Access Specifier> <Return Type> <Method Name>(Parameter List) {
Method Body
}
C# 方法的元素
以下是方法的不同元素 −
访问修饰符 − 它决定了变量或方法从另一个 class 的可见性。
返回类型 − 方法可以返回一个值。返回类型是方法返回的值的数据类型。如果方法不返回任何值,则返回类型为 void。
方法名 − 方法名是一个唯一标识符,且区分大小写。它不能与 class 中声明的任何其他标识符相同。
参数列表 − 括号括起来的参数用于向方法传递和接收数据。参数列表指的是方法的参数类型、顺序和数量。参数是可选的;也就是说,方法可以不包含参数。
方法体 − 它包含完成所需活动所需的指令集。
定义方法的示例
以下代码片段显示了一个名为 FindMax 的 function,它接受两个整数值并返回两者中较大的一个。它具有 public 访问修饰符,因此可以使用 class 的实例从 class 外部访问。
class NumberManipulator {
public int FindMax(int num1, int num2) {
/* 本地变量声明 */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
...
...
}
在 C# 中调用方法
您可以通过方法名连同括号 () 来调用方法。如果方法属于某个对象,则使用对象名后跟点 (.) 来调用它。如果是 static 方法,则使用 class 名调用。
示例 1
在以下示例中,我们创建了一个包含 FindMax 方法的 class,该方法接受两个整数参数,比较它们,并返回两者中较大的一个 −
using System;
namespace CalculatorApplication {
class NumberManipulator {
public int FindMax(int num1, int num2) {
/* 本地变量声明 */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
static void Main(string[] args) {
/* 本地变量定义 */
int a = 100;
int b = 200;
int ret;
NumberManipulator n = new NumberManipulator();
//调用 FindMax 方法
ret = n.FindMax(a, b);
Console.WriteLine("Max value is : {0}", ret );
Console.ReadLine();
}
}
}
输出
上述代码编译并执行后,将产生以下结果 −
Max value is : 200
从另一个类调用方法
你也可以通过类的实例从其他类调用 public method。例如,方法 FindMax 属于 NumberManipulator class,你可以从另一个类 Test 中调用它。
示例
在这个示例中,我们使用 C# 中的一个方法来找出两个数中的最大值,并演示从另一个类调用方法的流程 −
using System;
namespace CalculatorApplication {
class NumberManipulator {
public int FindMax(int num1, int num2) {
/* 本地变量声明 */
int result;
if(num1 > num2)
result = num1;
else
result = num2;
return result;
}
}
class Test {
static void Main(string[] args) {
/* 本地变量定义 */
int a = 100;
int b = 200;
int ret;
NumberManipulator n = new NumberManipulator();
//调用 FindMax 方法
ret = n.FindMax(a, b);
Console.WriteLine("Max value is : {0}", ret );
Console.ReadLine();
}
}
}
输出
当上述代码被编译并执行时,它会产生以下结果 −
Max value is : 200
递归方法调用
一个方法可以调用自身。这被称为 recursion。以下示例使用递归 function 计算给定数的阶乘 −
示例
using System;
namespace CalculatorApplication {
class NumberManipulator {
public int factorial(int num) {
/* 本地变量声明 */
int result;
if (num == 1) {
return 1;
} else {
result = factorial(num - 1) * num;
return result;
}
}
static void Main(string[] args) {
NumberManipulator n = new NumberManipulator();
//调用 factorial 方法 {0}", n.factorial(6));
Console.WriteLine("Factorial of 7 is : {0}", n.factorial(7));
Console.WriteLine("Factorial of 8 is : {0}", n.factorial(8));
Console.ReadLine();
}
}
}
输出
当上述代码被编译并执行时,它会产生以下结果 −
Factorial of 6 is: 720 Factorial of 7 is: 5040 Factorial of 8 is: 40320
C# 中的方法类型
根据功能,C# 方法可以分为以下类型:
- 无参数的简单方法
- 带参数的方法
- 带返回值的的方法
- 方法重载(相同方法,不同参数)
- 带默认参数的方法
1. 无参数的简单方法
这种方法不接受任何参数,当函数调用时不需要外部输入时可以定义这种方法。
在下面的示例中,我们定义了一个无参数的方法并直接调用它:
using System;
class Program {
static void WelcomeMsg() {
Console.WriteLine("Hello, Welcome to C# Tutorial!");
}
static void Main() {
WelcomeMsg(); // 调用该方法
}
}
上述代码编译并执行后,会产生以下结果 −
Hello, Welcome to C# Tutorial!
2. 带参数的方法
当有外部(相对于函数)输入时,即您希望在函数调用时传递值,可以定义这种方法;它允许您传递可以在方法内部使用的值。
在下面的示例中,我们定义了一个接受参数以执行动态操作的方法:
using System;
class Program {
static void Add(int a, int b) {
Console.WriteLine("Sum: " + (a + b));
}
static void Main() {
Add(5, 10);
Add(20, 30);
}
}
上述代码编译并执行后,会产生以下结果 −
Sum: 15 Sum: 50
3. 带返回值的的方法
当方法执行某些操作并且您希望在调用方法中获取结果时,这种方法非常有用。值通过 return 语句从方法返回。此外,您可以使用并存储返回的值。
在下面的示例中,我们定义了一个使用 return 语句返回值的函数:
using System;
class Program {
static int Multiply(int x, int y) {
return x * y; // 返回乘积
}
static void Main() {
int result = Multiply(4, 5);
Console.WriteLine("Multiplication Result: " + result);
}
}
上述代码编译并执行后,会产生以下结果 −
Multiplication Result: 20
4. 带默认参数的方法
您也可以通过提供默认值来定义方法。如果在调用方法时没有传递参数,则使用默认值。
在下面的示例中,我们定义了一个带有默认参数值的方法:
using System;
class Program {
static void WelcomeMsg(string name = "Guest") {
Console.WriteLine("Hello, " + name);
}
static void Main() {
WelcomeMsg(); // 使用默认值
WelcomeMsg("Krishna K."); // 使用提供的值
}
}
上述代码编译并执行后,会产生以下结果 −
Hello, Guest Hello, Krishna K.
向方法传递参数
调用带参数的方法时,您需要向方法传递参数。有三种方式可以将参数传递给方法 −
| 序号 | 机制与描述 |
|---|---|
| 1 | 值参数
这种方法将参数的实际值复制到函数的形式参数中。在这种情况下,函数内部对参数的修改不会影响参数。 |
| 2 | 引用参数
这种方法将参数的内存位置引用复制到形式参数中。这意味着对参数的修改会影响参数。 |
| 3 | 输出参数
这种方法有助于返回多个值。 |