zoukankan      html  css  js  c++  java
  • (原创)c#学习笔记06--函数01--定义和使用函数01--返回值

    第六章 函数

      本章内容:
    ●  如何定义和使用不接受或返回任何数据的简单函数
    ●  如何在函数中传入传出数据
    ●  使用变量作用域
    ●  如何结合使用Main()函数和命令行参数
    ●  如何把函数提供为结构类型的成员
    ●  如何使用函数重载
    ●  如何使用委托

      我们迄今看到的代码都是以单个代码块的形式出现的,其中包含一些重复执行的循环代码,以及有条件地执行的分支语句。如果要对数据执行某种操作,就应把所需要的代码放在合适的地方。

      这种代码结构的作用是有限的。某些任务常常需要在一个程序中执行好几次,例如,查找数组中的最大值。此时可以把相同(或几乎相同)的代码块按照需要放在应用程序中,但这样做也会存在问题。在某个常见任务中,即使进行非常小的改动(例如,修改某个代码错误),也需要修改多个代码块,这些代码块可能分布在整个应用程序中。如果忘了修改其中的一个代码块,就会产生很大的影响,导致整个应用程序失败。另外,应用程序也较长。

      解决这个问题的方法是使用函数。(个人觉得上面这段描述,其实是对函数作用的一个很好解释。更是一种思路。)

      例如,有一个函数返回数组中的最大值,可以在代码的任何位置使用这个函数,且在每个地方都使用相同的代码行。因为只需要提供一次这段代码,所以对代码的任何修改将影响使用该函数进行的计算。这个函数可以看作包含可重用的代码。

      函数还可以提高代码的可读性,因为可以使用函数将相关代码组合在一起。这样,应用程序主体就会非常短,因为代码的内部工作被分散了。

      函数还可以用于创建多用途的代码,让它们对不同的数据执行相同的操作。可以采用参数形式为函数提供信息,以返回值的形式得到函数的结果。在上面的示例中,参数就是一个要搜索的数组,而返回值就是数组中的最大值。这意味着每次可以使用同一个函数处理不同的数组。函数的名称和参数(不是返回类型)共同定义了函数的签名

    6.1  定义和使用函数

      首先从基础知识开始,看看不与调用代码交换任何数据的简单函数,然后介绍更高级的函数用法。首先看一个示例。代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Ch06Ex01
    {
        class Program
        {
            static void Write()
            {
                Console.WriteLine("Text output from function");
            }
    
            static void Main(string[] args)
            {
                Write();
                Console.ReadKey();
            }
        }
    }

      运行结果如下:

      上面的代码中,函数定义由以下几部分组成:

         两个关键字:static和void

         函数名后跟圆括号,如Write()

         一个要执行的代码块,放在花括号中

      函数Main()是控制台应用程序的入口点函数。当执行C#应用程序时,就会调用它包含的入口点函数,这个函数执行完毕后, 应用程序就终止了。所有C#可执行代码都必须有一个入口点。

      void更容易解释。这个关键字表明函数没有返回值。

      NOTE: 在定义函数和调用函数时,必须使用圆括号。如果删除它们,将无法编译代码。

    6.1.1  返回值

      通过函数进行数据交换的最简单方式是利用返回值。有返回值的函数会计算这个值,其方式与在表达式中使用变量计算它们包含的值完全相同。与变量一样,返回值也有数据类型。

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

          string myString; 
          myString = GetString(); 

      还有一个函数GetVal(),它返回一个double值,可以在数学表达式中使用它。

          double myVal; 
          double multiplier = 5.3; 
          myVal = GetVal() * multiplier; 

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

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

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

      从代码角度分析,控制台应用程序函数中的下述代码看起来像是前面见过的函数类型:

          static <returnType> <FunctionName>() 
          { 
              ... 
              return <returnValue>; 
          }

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

          static double GetVal() 
          { 
              return 3.2; 
          }

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

          static double GetVal() 
          { 
              double checkVal; 
              // CheckVal assigned a value through some logic (not shown here). 
              if (checkVal < 5) 
                  return 4.7; 
              return 3.2; 
          }

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

      最后需要注意的是,return可以用在通过void关键字声明的函数中(没有返回值)。如果这么做,函数就会立即终止。以这种方式使用 return 语何时,在 return 关键字和其后的分号之间提供返回值是错误的。

  • 相关阅读:
    MongoDB 学习笔记之 Aggregation Pipeline实战实现inner join
    MongoDB 学习笔记之 Aggregation Pipeline
    Shiro学习(3)授权
    Shiro学习(2)身份验证
    Shiro学习(1)简介
    redis常用命令建议
    Redis入门
    导出EXCEL(带数据)
    导出文件中文乱码处理
    poi之Excel上传
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/4911523.html
Copyright © 2011-2022 走看看