编辑
2025-09-19
C#
00

目录

一、方法的定义
二、方法的调用
三、参数的传递
1. 按值传递
2. 按引用传递(ref 关键字)
3. 输出参数(out 关键字)
4. 可变数量的参数(params 关键字)
四、方法的返回值
1. 返回值的方法
2. 无返回值的方法
五、方法的重载
六、方法的递归调用
八、结论

当在编写程序时需要执行重复的操作,可以将这些操作封装在方法中。对于复杂的程序,将逻辑分解成多个方法可以提高代码的可读性和可维护性。本文将详细介绍 C# 中的方法,包括其定义、调用、参数传递和返回值,并提供丰富的示例和注释。


一、方法的定义

在 C# 中,方法是属于类或对象的一组语句,它们一起执行一个功能。定义一个方法需要指定访问修饰符、返回类型、方法名以及参数列表。

C#
public class Calculator { // 定义一个方法,计算两个整数的和 public int Add(int num1, int num2) { return num1 + num2; } }

在上述示例中,我们定义了一个名为 Add 的方法,它接受两个整数参数 num1num2,并返回它们的和。


二、方法的调用

当需要执行方法中封装的操作时,可以通过调用该方法来实现。方法调用的语法是:对象名.方法名(参数列表);

C#
public class Program { public static void Main() { Calculator calculator = new Calculator(); // 调用 Add 方法并传递两个参数 int sum = calculator.Add(5, 7); // 打印结果 Console.WriteLine("和为:" + sum); } }

输出:

image.png

在这个示例中,我们创建了一个 Calculator 对象,调用其 Add 方法传递参数 57,并输出结果。


三、参数的传递

1. 按值传递

默认情况下,C# 中的方法参数是按值传递的,即方法接收到的是参数的副本,对参数的修改不会影响原始数据。

C#
public class Modifier { public void ModifyValue(int number) { number = number * 2; Console.WriteLine("方法内的值:" + number); } } public class Program { public static void Main() { int originalNumber = 5; Modifier modifier = new Modifier(); modifier.ModifyValue(originalNumber); Console.WriteLine("方法外的值:" + originalNumber); } }

输出:

image.png

2. 按引用传递(ref 关键字)

使用 ref 关键字可以按引用传递参数,对参数的修改会影响原始数据。

C#
public class Modifier { public void ModifyValue(ref int number) { number = number * 2; Console.WriteLine("方法内的值:" + number); } } public class Program { public static void Main() { int originalNumber = 5; Modifier modifier = new Modifier(); modifier.ModifyValue(ref originalNumber); Console.WriteLine("方法外的值:" + originalNumber); } }

输出:

image.png

3. 输出参数(out 关键字)

使用 out 关键字可以返回多个输出值。

C#
public class Calculator { public void Divide(int dividend, int divisor, out int quotient, out int remainder) { quotient = dividend / divisor; remainder = dividend % divisor; } } public class Program { public static void Main() { Calculator calculator = new Calculator(); int quotient, remainder; calculator.Divide(10, 3, out quotient, out remainder); Console.WriteLine("商:" + quotient); Console.WriteLine("余数:" + remainder); } }

输出:

image.png

4. 可变数量的参数(params 关键字)

当方法需要接受可变数量的参数时,可以使用 params 关键字。

C#
public class Printer { // 使用 params 关键字接受可变数量的整数参数 public void PrintNumbers(string label, params int[] numbers) { Console.WriteLine(label); foreach (int number in numbers) { Console.WriteLine(number); } } } public class Program { public static void Main() { Printer printer = new Printer(); // 调用 PrintNumbers 方法,传递多个整数参数 printer.PrintNumbers("打印数字:", 1, 2, 3, 4, 5); } }

输出:

image.png


四、方法的返回值

方法可以返回一个值,也可以不返回(返回类型为 void)。

1. 返回值的方法

当需要从方法中获取计算结果或处理后的数据时,方法可以返回这些值。

C#
public class NumberChecker { // 定义一个方法,判断一个数是否为偶数 public bool IsEven(int number) { return number % 2 == 0; } } public class Program { public static void Main() { NumberChecker checker = new NumberChecker(); // 调用 IsEven 方法并接收返回值 bool isNumberEven = checker.IsEven(10); Console.WriteLine("数字 10 是偶数吗? " + isNumberEven); } }

输出:

image.png

2. 无返回值的方法

如果方法执行某项操作但不需要返回数据,可以使用 void 类型。

C#
public class Logger { // 定义一个方法,打印日志信息 public void Log(string message) { Console.WriteLine("日志:" + message); } } public class Program { public static void Main() { Logger logger = new Logger(); // 调用 Log 方法 logger.Log("程序已启动"); } }

输出:

image.png


五、方法的重载

方法重载允许在同一个类中定义多个同名的方法,但参数列表必须不同。

C#
public class MathOperations { // 计算两个整数的和 public int Add(int a, int b) { return a + b; } // 计算三个整数的和 public int Add(int a, int b, int c) { return a + b + c; } // 计算两个双精度浮点数的和 public double Add(double a, double b) { return a + b; } } public class Program { public static void Main() { MathOperations math = new MathOperations(); Console.WriteLine("整数相加(两个参数):" + math.Add(2, 3)); Console.WriteLine("整数相加(三个参数):" + math.Add(2, 3, 4)); Console.WriteLine("双精度数相加:" + math.Add(2.5, 3.7)); } }

输出:

image.png


六、方法的递归调用

方法可以调用自身,这被称为递归。递归方法必须有一个终止条件,否则会导致无限循环。

C#
public class FactorialCalculator { // 计算阶乘的递归方法 public int Factorial(int number) { if (number == 1) return 1; else return number * Factorial(number - 1); } } public class Program { public static void Main() { FactorialCalculator calculator = new FactorialCalculator(); int result = calculator.Factorial(5); Console.WriteLine("5 的阶乘是:" + result); } }

输出:

image.png


七、局部方法(C# 7.0 引入)

在方法内部可以定义局部方法,用于在封装逻辑时提供更好的可读性。

C#
public class Greeting { public void SayHello(string name) { string GetGreetingMessage() { return "你好," + name + "!"; } Console.WriteLine(GetGreetingMessage()); } } public class Program { public static void Main() { Greeting greeting = new Greeting(); greeting.SayHello("小红"); } }

输出:

image.png


八、结论

C# 中的方法是构建程序的基础,它们使代码更加模块化和可重用。通过定义和调用方法,可以将复杂的问题分解成更小、更易于管理的部分。

本文通过详细的示例和注释,介绍了方法的定义、调用、参数传递、返回值、方法的重载以及递归调用等概念。掌握这些基础知识后,您将能够有效地使用方法来构建和维护您的 C# 程序。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!