CodeGym /课程 /C# SELF /返回值和return操作符

返回值和return操作符

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

1. 入门

想象一下:你打电话点披萨(或者用App,毕竟21世纪了)。你告诉接线员你的订单参数,然后接线员把结果——披萨——送给你!如果接线员啥都不说——你就饿着,哪有幸福可言。

函数也是这样:有时候它们只是做点事,但很多时候你还希望函数能返回点有用的东西,而且每次输入不一样,结果也可能不一样!比如:

  • 函数计算两个数的和,然后把结果告诉你。
  • 函数接收一个人的年龄,返回类别("小孩", "成年人", "退休人员")。
  • 函数生成一条漂亮的欢迎语,按用户名来打招呼。

返回值——就是函数把自己工作的结果“传递”到外面的一种方式。

2. 带返回值的方法签名

上一节我们见过这样的模板:

void PrintHello()
{
    Console.WriteLine("你好!");
}
没有返回值的方法( void)

void类型表示函数啥都不返回(void意思是“空”,没有值)。

现在来看看一个有返回值的函数长啥样:

int Add(int a, int b)
{
    // 函数体
}
带返回值的方法( int)

这里int在函数名前面——就是返回值的数据类型。比如函数要返回字符串就写string,要返回小数就写double,以此类推。

函数声明的语法长这样:

<返回值类型> 方法名(<参数>)
{
    // 函数体
}
带返回值方法的通用模板

不同签名的例子:

签名 返回什么
int Sum(int a, int b)
整数
string GetGreeting(string name)
字符串
double Multiply(double x, double y)
小数
bool IsAdult(int age)
布尔值

3. return操作符:怎么从函数里返回结果

想让一切顺利运行,光写对类型还不够——你得让函数把结果“送”回去。这个活就靠return操作符return。它的作用就是:我把这个值返回了,函数到这就结束了(就像“跳出去”一样)。

类型 方法名(...)
{
    // 一些计算
    return 值;
}
return的用法结构

例子:

int Add(int a, int b)
{
    int sum = a + b;
    return sum; // 把sum作为函数结果返回
}

重要规则:通过return返回的值类型,必须和你在方法签名里写的类型完全一样(或者兼容)。

4. 例子:写几个有返回值的方法

直接上例子!看看常见的几种情况。

例子1:两个数相加

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

// 用法:
int result = Add(10, 20);
Console.WriteLine("和: " + result); // 输出: 和: 30

例子2:个性化问候

string CreateGreeting(string name)
{
    return "你好, " + name + "!";
}

// 用法:
string greeting = CreateGreeting("安娜");
Console.WriteLine(greeting); // 输出: 你好, 安娜!

例子3:判断是否成年

bool IsAdult(int age)
{
    return age >= 18;
}

if (IsAdult(21))
{
    Console.WriteLine("允许进入。");
}
else
{
    Console.WriteLine("不好意思,只限成年人。");
}
// 输出: 允许进入。

例子4:返回值在表达式里的用法

Console.WriteLine("两倍: " + MultiplyByTwo(7));

int MultiplyByTwo(int n)
{
    return n * 2;
}

5. 返回值类型:多样性和特点

在C#里,函数可以返回任何“类型”(不只是数字、字符串这些常见的)。举几个例子:

  • 整数: int, long, short——都很简单。
  • 小数: double, float, decimal。
  • 字符串: string。
  • 布尔值: bool。
  • 数组: int[], string[]等等。
  • 引用类型: 你自己写的类的对象。
  • void: 特殊情况,啥都不返回。

为啥返回值类型这么重要?

编译器会死死盯着你,确保你返回的东西和你承诺的一样。如果你说要返回int,结果返回了字符串或者啥都没返回——直接报错。就像个很严的老板。

错误例子:

int GetNumber()
{
    return "42"; // 错误!应该返回int,不是string。
}

6. return不带值:用于void方法

说句公道话,在声明了返回类型的方法里(比如int、string),return后面必须跟你想返回的值。

但是!如果函数声明的是void类型,你还是可以用return,但不用带值——这样可以立刻结束函数执行。

void PrintNumbers(int n)
{
    if (n <= 0)
    {
        Console.WriteLine("数字不能是负数!");
        return; // 直接退出函数,不返回任何东西
    }
    for (int i = 1; i <= n; i++)
    {
        Console.WriteLine(i);
    }
}
return在 void方法里不带值

这种用法很方便,比如你想在某个条件下提前结束函数,但又不需要返回值。

7. 用return时常见的错误

哎,初学者经常会被return相关的错误搞晕!

问题1:函数应该返回东西却没写return

int GetValue(bool flag)
{
    if (flag)
        return 1;
    // 哎!如果flag == false呢?
}
// 错误:不是所有代码分支都有return!

解决办法:保证所有执行路径都有return!比如:

int GetValue(bool flag)
{
    if (flag)
        return 1;
    else
        return 0;
}

问题2:返回值类型不匹配

double GetMagicNumber()
{
    return 42; // 其实没问题(int可以自动转成double)
    // 但如果函数要返回int,你却返回了字符串——就会报错!
}

规则:注意类型兼容。如果不确定,可以手动转换成需要的类型:

return (double)42;

问题3:return用早了

记住,一旦执行了return,方法就立刻结束了。后面的代码都不会再执行!

int GetNumber()
{
    return 5;
    Console.WriteLine("这行代码永远不会被执行"); // 编译器会直接报错!
}

问题4:void方法里return带值(禁止!)

void PrintSomething()
{
    return 1; // 不能在void方法里返回值!
}
2
任务
C# SELF, 第 8 级, 课程 3
已锁定
返回带问候语的字符串的方法
返回带问候语的字符串的方法
2
任务
C# SELF, 第 8 级, 课程 3
已锁定
判断数字是否为偶数的方法
判断数字是否为偶数的方法
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION