函数中的关键字及作用域

来源:互联网 发布:win10网络连接不可用 编辑:程序博客网 时间:2024/04/28 17:47

函数中的关键字及作用域

       本章有几个比较重要的关键字:static ,void, params, ref, out, delegate.下面依次说明每一个需要注意的问题。

  • Static 定义函数时需要用return返回值。
  • Void  则不需要返回值。
  • Params 1)在使用时放在函数定义的最后,如function(inta, int b,params int[] c). 2)用params定义的参数的传递的数量不受限制。
  • Ref  用于指定引用参数,即函数处理的变量与函数调用中使用的变量相同,对这个变量进行任何的改变都会影响用作参数的变量值。在使用时注意1)不能指定const声明过的变量2)必须使用初始化过的变量。
  • Out  用法与ref类似,但是后者不能用于未赋值的变量而前者可以,另外在使用Out参数时,其必须看作是还未赋值,即调用代码可以把已赋值的变量用作out参数,存储在该变量中的值会在函数执行时丢失。
  • Delegate 除了直接调用函数之外,还可以通过委托调用它们。委托是用返回类型和参数列表定义的变量。给定的委托类型可以匹配返回类型和参数与委托定义相同的方法。

         除了上述关键字之外,本章还需要注意作用域的问题。

<pre name="code" class="csharp">代码片段1int i;string text;for(i=0;i<10;i++){text="Line"+Convert.ToString(i);Console.Writeline("{0}",text);}Console.Writeline("Last text output in loop:{0}",text);

代码片段2int i;string text="";for(i=0;i<10;i++){text="Line"+Convert.ToString(i);Console.Writeline("{0}",text);}Console.Writeline("Last text output in loop:{0}",text); 

        代码1输出失败,因为text 是在for循环内初始化的,赋给text的值在循环退出时就丢失了。代码2会显示”Line9”。实际上,在声明一个变量时,只声明一个简单变量类型,并不会引起什么变化。只有在给变量赋值时,这个值才占用一块内存空间。




0 0
原创粉丝点击