zoukankan      html  css  js  c++  java
  • 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 参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:

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

  • 相关阅读:
    js动态增加html页面元素
    sql(转自http://www.imooc.com/article/2325)
    正则表达式(转自https://segmentfault.com/a/1190000000699097)
    ssh整合(http://blog.csdn.net/songanling/article/details/22454973)
    json(http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html)
    spring定时器设置(转自:http://my.oschina.net/LvSantorini/blog/520049)
    (转)MyEclipse自动生成Hibernate实体类, oracle篇
    互联网安全
    来做几道算术题
    py打包exe的那些事
  • 原文地址:https://www.cnblogs.com/wangling353/p/CSharp_Base.html
Copyright © 2011-2022 走看看