C#方法之详解
一、方法基础语法
C#方法是封装代码逻辑的基本单元,用于执行特定操作并支持模块化编程。
- 定义与结构
C#方法由访问修饰符、返回值、方法名、参数列表和方法体构成。基础语法如下:
[访问修饰符] [static] 返回值类型 方法名(参数列表)
{
// 方法体
}
- 访问修饰符:public、private 等控制方法可见性,默认类内方法为 private。
- 返回值:无返回值时使用 void,否则需声明具体类型(如 int、string)。
- 参数传递
- 值类型与引用类型:值类型参数传递副本,引用类型(如类对象)传递内存地址。
- 可选参数:通过默认值实现,调用时可省略:
public void Print(string text, bool isBold = false) { ... }
Print("Hello"); // 自动使用 isBold = false
- 命名参数:调用时指定参数名,提高可读性:
Print(isBold: true, text: "Warning");
- 可变参数:使用 params 接收数组:
public int Sum(params int[] numbers) { ... }
Sum(1, 2, 3);
二、方法重载与特殊类型
- 方法重载
同一类中允许定义多个同名方法,参数列表必须不同(类型、数量或顺序):
public void Log(int code) { ... }
public void Log(string message) { ... } // 合法重载
注:返回值类型不参与重载判定。
- 静态方法
- 使用 static 修饰,直接通过类名调用,无需实例化对象46。
- 示例:
public static class MathUtils
{
public static int Add(int a, int b) => a + b;
}
int sum = MathUtils.Add(3, 5);
- 扩展方法
通过 this 关键字为现有类型添加新方法,需在静态类中定义:
public static class StringExtensions
{
public static bool IsNumeric(this string str)
{
return int.TryParse(str, out _);
}
}
bool result = "123".IsNumeric(); // 返回 true
- 构造函数
用于初始化对象,与类同名且无返回值:
public class Person
{
public string Name { get; set; }
public Person(string name) => Name = name;
}
三、高级方法特性
- 异步方法
使用 async/await 实现非阻塞操作,适用于I/O密集型任务:
public async Task<string> FetchDataAsync(string url)
{
HttpClient client = new HttpClient();
return await client.GetStringAsync(url);
}
注:异步方法需返回 Task 或 Task 类型。
- Lambda表达式
简化匿名方法的定义:
Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // 输出 25
- 递归方法
方法直接或间接调用自身,需注意终止条件:
public int Factorial(int n)
{
if (n == 0) return 1;
return n * Factorial(n - 1);
}
四、使用建议
- 代码规范
- 单一职责原则:每个方法仅完成一个明确任务。
- 命名清晰:方法名使用动词短语(如 CalculateTax、ValidateInput)。