什么是方法(Method)
方法(Method)是 C# 中用于封装一组执行特定功能代码的成员。通过方法,可以提高代码的复用性、可读性和维护性。
简单来说,方法就是完成某项任务的代码块。
一、方法的基本语法
访问修饰符 返回类型 方法名(参数列表) { // 方法体 return 返回值; }示例
using System; class Program { static void Main() { SayHello(); } static void SayHello() { Console.WriteLine("Hello World!"); } }输出:
Hello World!1.方法组成部分
以以下方法为例:
public static int Add(int a, int b) { return a + b; }组成部分说明:
| 组成部分 | 说明 |
|---|---|
| public | 访问修饰符 |
| static | 静态方法 |
| int | 返回值类型 |
| Add | 方法名称 |
| (int a, int b) | 参数列表 |
| return | 返回结果 |
1.1无参数无返回值方法
static void PrintMessage() { Console.WriteLine("欢迎学习C#"); }调用:
PrintMessage();特点:
- 没有参数
- 没有返回值
- 返回类型使用
void
1.2有参数无返回值方法
static void PrintName(string name) { Console.WriteLine("姓名:" + name); }调用:
PrintName("张三");输出:
姓名:张三1.3无参数有返回值方法
static string GetTime() { return DateTime.Now.ToString(); }调用:
string time = GetTime(); Console.WriteLine(time);1.4有参数有返回值方法
static int Sum(int num1, int num2) { return num1 + num2; }调用:
int result = Sum(10, 20); Console.WriteLine(result);输出:
30二、参数传递方式
1. 值传递(默认)
static void ChangeValue(int num) { num = 100; } int a = 10; ChangeValue(a); Console.WriteLine(a);输出:
10说明:
- 方法修改的是副本
- 原变量不受影响
2. ref 参数
必须先赋值才能传入。
static void ChangeValue(ref int num) { num = 100; } int a = 10; ChangeValue(ref a); Console.WriteLine(a);输出:
1003. out 参数
用于返回多个结果。
static void GetData(out string name, out int age) { name = "张三"; age = 18; } string name; int age; GetData(out name, out age);4. in 参数
只读引用传递。
static void Show(in int num) { Console.WriteLine(num); }特点:
- 性能高
- 方法内部不可修改
可选参数
static void ShowInfo(string name, int age = 18) { Console.WriteLine($"{name}-{age}"); }调用:
ShowInfo("张三"); ShowInfo("李四", 25);输出:
张三-18 李四-25命名参数
ShowInfo(age: 20, name: "王五");优点:
- 提高代码可读性
- 参数顺序可调整
params 可变参数
允许传入不确定数量的参数。
static int Sum(params int[] nums) { int total = 0; foreach (int num in nums) { total += num; } return total; }调用:
Console.WriteLine(Sum(1,2,3)); Console.WriteLine(Sum(1,2,3,4,5));输出:
6 15方法重载(Overload)
同一个方法名,不同参数列表。
static int Add(int a, int b) { return a + b; } static double Add(double a, double b) { return a + b; } static int Add(int a, int b, int c) { return a + b + c; }调用:
Add(1, 2); Add(1.5, 2.5); Add(1, 2, 3);三、递归方法
方法调用自身。
计算阶乘
static int Factorial(int n) { if (n == 1) return 1; return n * Factorial(n - 1); }调用:
Console.WriteLine(Factorial(5));输出:
120四、静态方法与实例方法
1.静态方法
属于类本身。
class MathHelper { public static int Add(int a, int b) { return a + b; } }调用:
MathHelper.Add(1, 2);实例方法
属于对象。
class Person { public void SayHello() { Console.WriteLine("你好"); } }调用:
Person p = new Person(); p.SayHello();2.表达式主体方法
适用于简单逻辑。
static int Square(int x) => x * x;等价于:
static int Square(int x) { return x * x; }3.局部函数(Local Function)
方法内部定义方法。
static void Main() { int Add(int a, int b) { return a + b; } Console.WriteLine(Add(1, 2)); }方法设计原则
单一职责原则
一个方法只完成一项功能。
❌ 不推荐:
void Process() { // 查询数据 // 计算数据 // 保存数据 // 打印日志 }✅ 推荐:
GetData(); CalculateData(); SaveData(); WriteLog();方法命名规范
推荐使用动词开头:
GetUser() CreateOrder() DeleteFile() UpdateData() SaveChanges()避免:
Data() User() Info()总结
C# 方法是实现代码复用和模块化开发的重要基础。掌握方法的定义、调用、参数传递(值、ref、out、in)、可选参数、可变参数、方法重载、递归以及静态与实例方法的区别,有助于编写结构清晰、易维护的程序。在实际开发中,应遵循单一职责原则和规范的命名习惯,使代码更加专业和高效。