Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 2.4 方法与参数传递

2.4 方法与参数传递

方法的基本概念

方法是C#中用于封装可重用代码块的基本单元,通过方法可以实现代码的模块化和逻辑复用。一个标准的方法包含以下部分:

  • 访问修饰符(如public/private)
  • 返回类型(void表示无返回值)
  • 方法名称(使用PascalCase命名规范)
  • 参数列表(可选)
  • 方法体(包含执行代码)
// 方法定义示例
public int Add(int num1, int num2) 
{
    return num1 + num2;
}

参数传递方式

C#支持多种参数传递机制:

1. 值传递(默认方式)

  • 传递参数的副本
  • 方法内修改不会影响原始变量
void ModifyValue(int x) {
    x = 10;  // 不影响原始值
}

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

  • 传递变量的内存地址
  • 方法内修改会影响原始变量
void ModifyRef(ref int x) {
    x = 10;  // 修改原始值
}

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

  • 用于从方法返回多个值
  • 必须在方法内赋值
void GetValues(out int x, out int y) {
    x = 5;
    y = 10;
}

4. 参数数组(params关键字)

  • 允许传递可变数量的参数
  • 必须是方法的最后一个参数
int Sum(params int[] numbers) {
    return numbers.Sum();
}

方法重载

允许在同一作用域内定义多个同名方法,只要它们的参数列表不同:

  • 参数类型不同
  • 参数数量不同
  • 参数顺序不同(不推荐)
// 重载示例
void Display(int num) { /*...*/ }
void Display(string text) { /*...*/ }
void Display(int num, string text) { /*...*/ }

可选参数与命名参数

可选参数

  • 为参数提供默认值
  • 必须出现在必需参数之后
void Greet(string name, string prefix = "Mr.") {
    Console.WriteLine($"Hello, {prefix} {name}");
}

命名参数

  • 调用时显式指定参数名
  • 提高代码可读性
Greet(prefix: "Dr.", name: "Smith");

最佳实践

  1. 单一职责原则:每个方法应只完成一个明确的任务
  2. 合理的方法长度:建议不超过20-30行代码
  3. 有意义的命名:方法名应清晰表达其功能
  4. 参数数量控制:建议不超过3-4个参数,过多考虑使用对象封装
  5. 异常处理:在方法内部处理预期异常或向上抛出

示例:综合应用

public class Calculator 
{
    // 方法重载
    public int Add(int a, int b) => a + b;
    public double Add(double a, double b) => a + b;
    
    // 输出参数
    public bool TryDivide(int dividend, int divisor, out double result) {
        if (divisor == 0) {
            result = 0;
            return false;
        }
        result = (double)dividend / divisor;
        return true;
    }
    
    // params参数
    public int Sum(params int[] numbers) => numbers.Sum();
}

// 使用示例
var calc = new Calculator();
calc.Add(2, 3);
calc.Add(2.5, 3.7);

if (calc.TryDivide(10, 3, out var result)) {
    Console.WriteLine($"Result: {result}");
}

var total = calc.Sum(1, 2, 3, 4, 5);
Last Updated:: 5/3/25, 11:01 PM