404 Not Found

404 Not Found


nginx

方法基础

什么是方法

方法是执行特定任务的代码块。将重复逻辑封装为方法,可以提高代码的复用性和可读性。

C# 的方法必须定义在类或结构体内部,这与 C 语言中独立的函数不同。使用顶级语句时,可以定义局部函数。

方法定义与调用

语法格式

TEXT
访问修饰符 返回类型 方法名(参数列表)
{
    方法体
}

示例

CSHARP
using System;

class Program
{
    static void SayHello()
    {
        Console.WriteLine("Hello, World!");
    }

    static void Main()
    {
        SayHello();
        SayHello();
    }
}
▶ 试一试
TEXT
Hello, World!
Hello, World!
💡 调用方法时,使用 方法名(参数) 的形式。方法只需定义一次,可以多次调用。

参数与返回值

带参数的方法

参数让方法可以接收外部传入的数据,从而处理不同的输入。

示例

CSHARP
using System;

class Program
{
    static void Greet(string name)
    {
        Console.WriteLine("你好, " + name + "!");
    }

    static void Main()
    {
        Greet("小明");
        Greet("小红");
    }
}
▶ 试一试
TEXT
你好, 小明!
你好, 小红!

带返回值的方法

返回值让方法可以将计算结果传回调用者。

示例

CSHARP
using System;

class Program
{
    static int Add(int a, int b)
    {
        return a + b;
    }

    static void Main()
    {
        int result = Add(3, 5);
        Console.WriteLine("3 + 5 = " + result);
        Console.WriteLine("10 + 20 = " + Add(10, 20));
    }
}
▶ 试一试
TEXT
3 + 5 = 8
10 + 20 = 30

形参与实参

概念 说明 示例
形参(形式参数) 方法定义中的参数 static int Add(int a, int b) 中的 ab
实参(实际参数) 调用方法时传入的值 Add(3, 5) 中的 35
⚠️ 形参是变量声明,实参是具体的值或表达式。调用时实参的值会传递给对应的形参。

return 语句

return 语句有两个作用:

  1. 将结果返回给调用者
  2. 立即退出方法,后续代码不再执行

示例

CSHARP
using System;

class Program
{
    static string GetGrade(int score)
    {
        if (score >= 90)
            return "优秀";
        if (score >= 60)
            return "及格";
        return "不及格";
    }

    static int Max(int a, int b)
    {
        if (a > b)
            return a;
        else
            return b;
    }

    static void Main()
    {
        Console.WriteLine(GetGrade(95));
        Console.WriteLine(GetGrade(70));
        Console.WriteLine(GetGrade(45));
        Console.WriteLine("较大值: " + Max(12, 8));
    }
}
▶ 试一试
TEXT
优秀
及格
不及格
较大值: 12
⚠️ 一旦执行 return,方法立即结束。非 void 方法中所有代码路径都必须返回值。

void 方法

void 表示方法没有返回值。void 方法不需要 return 语句,但可以用 return; 提前退出。

示例

CSHARP
using System;

class Program
{
    static void PrintLine(int length)
    {
        if (length <= 0)
            return;
        string line = new string('-', length);
        Console.WriteLine(line);
    }

    static void PrintInfo(string name, int age)
    {
        Console.WriteLine("姓名: " + name);
        Console.WriteLine("年龄: " + age);
    }

    static void Main()
    {
        PrintInfo("小明", 18);
        PrintLine(20);
        PrintLine(-5);
    }
}
▶ 试一试
TEXT
姓名: 小明
年龄: 18
--------------------
📌 return; 在 void 方法中仅用于提前退出,不返回任何值。

方法的调用栈

调用栈是程序执行方法时的内存管理机制。每次调用方法时,会在栈上压入一个栈帧,方法返回时弹出。

示例

CSHARP
using System;

class Program
{
    static int Square(int x)
    {
        return x * x;
    }

    static int SumOfSquares(int a, int b)
    {
        int sa = Square(a);
        int sb = Square(b);
        return sa + sb;
    }

    static void Main()
    {
        int result = SumOfSquares(3, 4);
        Console.WriteLine("结果: " + result);
    }
}
▶ 试一试
TEXT
结果: 25

调用过程如下:

TEXT
1. Main() 入栈
2.   SumOfSquares(3, 4) 入栈
3.     Square(3) 入栈 → 返回 9 → 出栈
4.     Square(4) 入栈 → 返回 16 → 出栈
5.   SumOfSquares 返回 25 → 出栈
6. Main → 输出 25 → 出栈

ℹ️ 栈遵循"后进先出"原则。方法嵌套越深,栈帧越多。栈空间有限,递归过深会导致栈溢出。

方法命名规范

C# 方法命名使用 PascalCase(帕斯卡命名法):每个单词首字母大写,不使用下划线。

风格 示例 语言
PascalCase CalculateTotalGetUserName C#
snake_case calculate_totalget_user_name C、Python

示例

CSHARP
using System;

class Program
{
    static double CalculateArea(double radius)
    {
        return 3.14159 * radius * radius;
    }

    static bool IsValidAge(int age)
    {
        return age >= 0 && age <= 150;
    }

    static void PrintUserInfo(string name, int age)
    {
        Console.WriteLine(name + ", " + age + "岁");
    }

    static void Main()
    {
        double area = CalculateArea(5.0);
        Console.WriteLine("面积: " + area);
        Console.WriteLine("年龄有效: " + IsValidAge(25));
        PrintUserInfo("小明", 25);
    }
}
▶ 试一试
TEXT
面积: 78.53975
年龄有效: True
小明, 25岁

✅ 方法名应使用动词或动词短语开头,如 GetSetCalculateIsPrint 等。

表达式体方法

C# 6.0 引入了表达式体方法,用 => 简化单行方法的写法。

示例

CSHARP
using System;

class Program
{
    static int Square(int x) => x * x;

    static double CircleArea(double r) => 3.14159 * r * r;

    static bool IsAdult(int age) => age >= 18;

    static void Main()
    {
        Console.WriteLine(Square(7));
        Console.WriteLine(CircleArea(3.0));
        Console.WriteLine(IsAdult(20));
    }
}
▶ 试一试
TEXT
49
28.27431
True
🚀 => 是 lambda 表达式的简写形式,等价于 { return 表达式; },仅适用于单行逻辑。

值传递

C# 默认使用值传递:值类型复制数据,引用类型复制引用。

示例

CSHARP
using System;

class Program
{
    static void TryChange(int x)
    {
        x = 999;
    }

    static void Main()
    {
        int num = 10;
        TryChange(num);
        Console.WriteLine("num = " + num);
    }
}
▶ 试一试
TEXT
num = 10
⚠️ 值传递时,形参是实参的副本。方法内修改形参不影响实参的值。

多种返回类型

方法可以返回各种类型:intdoublestringbool 等。

示例

CSHARP
using System;

class Program
{
    static int GetLength(string text)
    {
        return text.Length;
    }

    static double GetAverage(int a, int b)
    {
        return (a + b) / 2.0;
    }

    static bool IsPositive(double value)
    {
        return value > 0;
    }

    static string BuildGreeting(string name)
    {
        return "欢迎, " + name + "!";
    }

    static void Main()
    {
        Console.WriteLine(GetLength("Hello"));
        Console.WriteLine(GetAverage(3, 4));
        Console.WriteLine(IsPositive(-2.5));
        Console.WriteLine(BuildGreeting("小明"));
    }
}
▶ 试一试
TEXT
5
3.5
False
欢迎, 小明!

❓ 常见问题

Q 方法可以没有参数吗?
A 可以,参数列表留空即可,如 static void SayHi()

Q:一个方法可以有多个 return 语句吗? A:可以,但非 void 方法中每条执行路径都必须返回一个值。

Q:void 方法能使用 return 吗? A:可以,使用 return; 提前退出,但不能返回任何值。

Q:形参和实参名字必须相同吗? A:不需要,它们是独立的变量,名字可以不同。

Q:C# 方法能独立于类存在吗? A:不能,C# 方法必须在类或结构体内,但顶级语句中可定义局部函数。

📖 小节

  • 方法由访问修饰符、返回类型、方法名和参数列表组成
  • 形参是定义时的变量,实参是调用时传入的值
  • return 返回结果并退出方法,void 方法无返回值
  • 调用栈管理方法执行的内存,遵循后进先出原则
  • C# 方法命名使用 PascalCase 规范
  • 表达式体方法 => 简化单行方法定义
  • 默认值传递:值类型复制数据,修改形参不影响实参

📝 作业

  1. 编写一个 static int Factorial(int n) 方法,计算 n 的阶乘并返回结果
  2. 编写一个 static bool IsEven(int num) 方法,判断整数是否为偶数,用表达式体语法实现
  3. 编写一个 static void PrintMultiplicationTable(int n) 方法,打印 n 的乘法表(1×n 到 9×n)
  4. 编写一个 static string ClassifyScore(int score) 方法,根据分数返回"优秀""良好""及格"或"不及格"
  5. 编写一个 static double CalcBMI(double weight, double height) 方法,根据体重(kg)和身高(m)计算 BMI 值
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏