CodeGym /课程 /C# SELF /C#中的函数(方法)入门

C#中的函数(方法)入门

C# SELF
第 8 级, 课程 2
可用

1. C#里的函数/方法

你已经学了不少C#命令了,所以你现在能写挺复杂的程序了。10、20、30行代码的程序——其实不算大,对吧?

但如果一个程序有100+行,那就算大了,代码看起来就有点头大了。那怎么让写和读这种大程序变简单点呢?

可以的,这时候方法(函数)就能帮上忙了。

那方法到底是啥?简单说,方法就是一组有独特名字的命令。换句话说,就是把几条命令打包成一组,给它起个独一无二的名字。就这样——方法就搞定了。

比如你有一段画猫的代码:

Console.WriteLine("  |\\__/,|   (`\\");
Console.WriteLine("  |o_o  |__ _) )");
Console.WriteLine("  (____/   (_/ ");
画猫的代码

它会输出:

  |\__/,|   (`\
  |o_o  |__ _) )
  (____/   (_/

你可以把它单独放进一个方法里,想画多少只猫都行:

void WriteCat()
{
    Console.WriteLine("  |\\__/,|   (`\\");
    Console.WriteLine("  |o_o  |__ _) )");
    Console.WriteLine("  (____/   (_/ ");    
}

//画三只猫
WriteCat();
WriteCat();
WriteCat();
用方法反复输出猫

当程序运行时,每次执行WriteCat(),它就会把WriteCat()里的所有命令都跑一遍。我们就是把几条命令打包成了一个新命令(方法)。

函数的意义:

  • 把程序分成小块,每块只管自己的事。
  • 方便复用:写一次,随便用多少次都行。
  • 减少出错:函数里有bug只要改一处就行。
  • 给复杂操作起名字——代码可读性直接提升。

术语:函数、方法、过程

在C#里,函数和方法基本是一个意思,不过有点小区别。

  • 方法——属于类或对象的函数(C#里几乎全是方法)。
  • 过程——不返回值的函数(void方法)。
  • 函数——广义上说就是任何有名字、能被调用的程序片段。

官方说法C#里这些都叫方法,但你要是后面看到“函数”也别慌!

2. 方法声明语法:逐步拆解

来拆解个最简单的函数,经典的“Hello, World!”,不过把输出单独放进方法里:

using System;

class Program
{
    static void Main()
    {
        PrintHello();
    }

    static void PrintHello()	// 输出Hello, World!
    {
        Console.WriteLine("Hello, World!");
    }
}
方法声明和调用的例子

语法拆解:

部分 例子 说明
修饰符
static
表示方法属于类(详细后面讲)
返回值类型
void
表示方法啥都不返回
方法名
PrintHello
调用方法时用的名字
参数
()
参数(空的就是没参数)
方法体
{ ... }
调用方法时要执行的代码

类比:
方法就像咖啡机:你投钱(参数),按按钮(调用方法),咖啡机煮咖啡(方法体),然后给你结果(返回值)——如果是void方法就啥都不返回!

3. 怎么调用方法

调用方法就是写方法名加括号就行了:

PrintHello(); // 没参数的方法

int sum = Add(2, 3); // 有参数和返回值的方法

注意:只能在方法声明之后(或者代码里“上面”声明,或者在同一个类里)才能调用方法。

4. 带参数的方法

方法可以接收参数,这样方法的行为就很灵活,啥场景都能用。其实参数就是方法里的变量,调用方法时给它们赋值。声明方法时要写参数。

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

// 用法:
Greet("爱丽丝");
Greet("鲍勃");
带参数的方法

参数——就是你调用方法时传进去的变量。

部分 例子 说明
参数类型
string
接收的值的类型
参数名
name
在方法里用的名字

调用:
Greet("爱丽丝"); —— name就拿到"爱丽丝"这个值。

多个参数

可以用逗号声明多个参数:

static void PrintSum(int a, int b)
{
    Console.WriteLine($"和: {a + b}");
}

// 用法:
PrintSum(5, 7); // 和: 12
带多个参数的方法

5. 值参数和引用参数

函数的参数就是普通变量,跟别的变量规则一样。

所以要记住:你把数组传给方法时,传的是引用,也就是说方法能改数组内容。简单类型(int、double)传的是值,会复制一份。

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // 会改原数组!
}

// 用法:
int[] a = {1, 2, 3, 4, 5};
ZeroFirstGrade(a);
Console.WriteLine(a[0]);	//会输出0
传数组是引用——方法会改原数据

其实这里发生了啥:

static void ZeroFirstGrade(int[] grades)
{
    grades[0] = 0; // 会改原数组!
}

// 用法:
int[] a = {1, 2, 3, 4, 5};

//ZeroFirstGrade(a);
int[] grades = a;
grades[0] = 0;

Console.WriteLine(a[0]);	//会输出0
传数组引用的类比
2
任务
C# SELF, 第 8 级, 课程 2
已锁定
创建一个无参数的方法
创建一个无参数的方法
2
任务
C# SELF, 第 8 级, 课程 2
已锁定
创建带参数的方法
创建带参数的方法
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION