位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 定义和使用函数—返回值

提问人:刘团圆发布时间:2020-12-04

    通过函数进行数据交换的最简单方式是利用返回值。有返回值的函数会最终计算得到这个值,就像在表达式中使用变量时,会计算得到变量包含的值一样。与变量一样,返回值也有数据类型。

例如,有一个函数GetStringO,其返回值是一个字符串,可在代码中使用该函数,如下所示:

    string myString; 

    myString = GetString();

还有一个函数GetValO,它返回一个double值,可在数学表达式中使用它:

    double myVal;

    double multiplier = 5.3;

    myVal = GetVal() * multiplier;

当函数返回一个值时,必须采用以下两种方式修改函数:

•在函数声明中指定返回值的类型,但不使用关键字void。

•使用return关键字结束函数的执行,把返回值传送给调用代码。

从代码角度看,对于我们讨论的控制台应用程序函数,其使用返回值的形式如下所示:

static <returnType> <FunctionName>()

{

    ...

    return <returnVa1ue>;

}

这里唯一的限制是<returnType>必须是<returnType>类型的值,或者可以隐式转换为该类型。但是,可以是任何类型,包括前面介绍的较复杂类型。这段代码可以很简单:

static double GetVal() 

{

    return 3.2;

}

但是,返回值通常是函数执行的一些处理的结果。上面的结果使用const变量也可以简单地实现。

当执行到return语句时,程序会立即返回调用代码。这条语句后面的代码都不会执行。但这并不意味着return语句只能放在函数体的最后一行。可以在前边的代码里使用return语句,例如放在分支逻辑之后。把return语句放在for循环、if块或其他结构中会使该结构立即终止,函数也立即终止。例如:

static double GetVal()

{

    double checkVal;

    // cheGkVal assigned a value through some logic (not shown here). 

    if (checkVal < 5) 

        return 4.7;

    return 3.2;

}

根据checkVal的值,将返回两个值中的一个。这里的唯一限制是,必须在函数的闭合花括号}之前处理 return 语句。下面的代码是不合法的:

static double GetVal()

{

    double checkVal;

    // checkVal assigned a value through some logic.

    if (checkVal < 5) 

        return 4,7;

}

    如果checkVal>= 5,就不会执行到return语句,这是不允许的。所有处理路径都必须执行到return语句。大多数情况下,编译器会检查是否执行到return语句,如果没有,就给出错误“并不是所有的处理路径都返回一个值”。

    执行一行代码的函数可使用C# 6引入的一个功能:表达式体方法(expression-bodied method)。以下函数模式使用=>(Lambda箭头)来实现这一功能。

    static <returnType> <FunctionName>() => <myVall * myVal2>;

例如,C#6之前的Multip]〆)函数如下:

    static double Multiply(double myVail, double myVal2)

{

    return myVail * myVal2;

}

现在可以使用=>(Lambda箭头)编写它。下述代码用更简单和统一的方式表达方法的意图:

    static double Multiply(double myVall, double myVa12) => mVall * MyVal2;

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部