C# 方法(Methods)
                           
天天向上
发布: 2025-04-13 13:18:24

原创
405 人浏览过

下面是关于 C# 方法(Methods) 的全面、专业、详细的讲解,并提供多途径使用方式和实用技巧。


一、什么是方法(Method)?

方法是执行某种操作或返回某个值的 代码块,它是类或结构中定义的成员。

  • 方法可以包含参数并返回结果。
  • 方法的设计是封装行为的主要方式,是面向对象中封装与复用的关键。

二、C# 方法的基本结构

[访问修饰符] [返回类型] 方法名([参数列表])
{
    // 方法体
    // 语句
    return [值];
}

🔹 示例:

public int Add(int a, int b)
{
    return a + b;
}

三、方法的组成详解

组成部分说明
访问修饰符public, private, protected, internal 控制方法可见性
返回类型方法执行完毕后返回的值类型,如 int, void, string, 自定义类型等
方法名遵循 Pascal 命名法,如 CalculateTotal, GetData
参数列表方法接收的输入,可以为多个,有默认值、可选、引用、输出等方式
方法体方法的主体逻辑
return 语句返回值(如果有),void 类型可省略

四、常见类型方法举例

1. 无参无返回值

public void SayHello()
{
    Console.WriteLine("Hello!");
}

2. 有参有返回值

public double Multiply(double x, double y)
{
    return x * y;
}

3. 默认参数(C# 支持)

public void Greet(string name = "Guest")
{
    Console.WriteLine($"Hello, {name}!");
}

4. 可变参数(params)

public int Sum(params int[] numbers)
{
    return numbers.Sum();
}

5. 引用参数(ref)

public void UpdateValue(ref int number)
{
    number += 10;
}

6. 输出参数(out)

public bool TryParseInt(string input, out int result)
{
    return int.TryParse(input, out result);
}

五、方法重载(Overloading)

同一个类中可以定义多个同名方法,只要参数类型或个数不同

public void Print(string msg) { }
public void Print(string msg, int count) { }
public void Print(int code) { }

📌 重载提高了方法的灵活性与可读性。


六、局部函数(C# 7+)

可在方法内部定义一个函数,只在当前方法作用域内有效:

public void MainLogic()
{
    int Add(int x, int y) => x + y;
    Console.WriteLine(Add(2, 3));
}

七、递归方法

方法调用自身,用于解决递归问题,如阶乘、斐波那契等。

public int Factorial(int n)
{
    if (n == 1) return 1;
    return n * Factorial(n - 1);
}

八、异步方法(async/await)

异步方法用于非阻塞操作,如网络请求、文件 I/O。

public async Task<string> DownloadDataAsync(string url)
{
    using HttpClient client = new HttpClient();
    return await client.GetStringAsync(url);
}

九、静态方法 vs 实例方法

类型特点示例
实例方法需创建对象才能调用person.SayHello()
静态方法属于类本身,可直接调用Math.Sqrt(25)

十、最佳实践建议

  • ✅ 方法名应表达清晰意图,如 CalculateTax()IsValidEmail()
  • ✅ 一个方法只做一件事(Single Responsibility Principle)。
  • ✅ 长方法应拆分为多个小方法以提升可读性。
  • ✅ 使用注释和 XML 文档注释帮助他人理解方法目的。

十一、权威文档参考


十二、实用拓展:委托与方法指针

你还可以将方法作为参数传递:

public delegate void LogDelegate(string message);

public void LogMessage(string msg)
{
    Console.WriteLine(msg);
}

LogDelegate log = LogMessage;
log("This is a log.");

更多详细内容,请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *