C#基础知识01(continue、break 和 return、ref 和 out)

 

break【跳出循环或者退出一个switch语句】由于它是用来退出循环或者switch语句的,所以只有当它出现在这些语句中时才是合法的。

continue 语句和break语句相似,只是它不是退出一个循环,而是开始循环的一次新迭代【跳出本次循环,开始一个新的循环】。continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地方使用都会引起错误!

return 语句就是用于指定函数的返回值。return语句只能出现在函数体内,当执行return语句时就会跳转到函数的“反花括号处”(“}”),即使函数主体中还有其他语句,函数执行也会停止!

ref 和 out 都是引用传值;ref 可以把参数的数值传递进函数,但是out是要把参数清空再传递,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以传进去之后必须初始化一次。

传递到 ref 参数的参数必须最先初始化。这与 out 不同,后者的参数在传递之前不需要显式初始化。

先来看一下ref其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。

static void Main(string[] args)
        {
            int val = 0;                       //初始化变量
            Method(ref val);
            Console.WriteLine(val);              // val is now 44
            Console.ReadLine();
        }
        static void Method(ref int i)
        {
            i = 44;
        }

 再来看一下out: ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字(这点同 ref 相似)。

static void Main(string[] args)
        {
            int val;                             //声明变量 val ,不用赋值
            Method(out val);
            Console.WriteLine(val);              // val is now 44
            Console.ReadLine();
        }
       static void Method(out int i)
        {
            i = 44;
        }
ref  out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。
例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:

   

如果一个方法采用 ref  out 参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:

  这样两个方法编译是可以成功的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2014-01-06 15:54  盛夏飘雪  阅读(427)  评论(0编辑  收藏  举报