zoukankan      html  css  js  c++  java
  • ref和out的用法说明举例(转)

    1. ref:
    int i =0;
    有函数fun(ref i)和fun(i)
    它们的函数体都是{ i = 3;},那么在执行以下两段代码后:
    (1)int i = 0; fun(i); System.Console.WriteLine(i.ToString());
    (2)int i = 0; fun(ref i); System.Console.WriteLine(i.ToString());
    (1)的输出是1,(2)的输出是3,

    2. out:
    int i; //注意,这样个里就是声明了变量i,并木有对其初始化
    有函数fun(ref i)、fun(out i)和fun(i)
    它们的函数体都是{ i = 3;},那么在执行以下三段代码后:
    (1)int i = 0; fun(i); System.Console.WriteLine(i.ToString());
    (2)int i = 0; fun(ref i); System.Console.WriteLine(i.ToString());
    (3)int i = 0; fun(out i); System.Console.WriteLine(i.ToString());
    (1)和(2)在编译的时候都会报错:不准确 CS0165: 用了未赋值的局部变量“i”
    而(3)能正常编译,而且输出3

    最后总结一次:
    Ref和Out这样个2个关键字都能够提供相似的功效,其作用也很像C中的指针变量。稍有不相同之处是:
    用Ref型参数时,传入的参数必须先被初始化。而Out则不要要,对Out而言,就必须在方法中对其完成初始化。
    用Ref和Out时都必须注意,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。
    Out更适合用在要要Return多个返回值的地方,而Ref则用在要要被调出使用的方法修改调出使用者的引用的时候。

  • 相关阅读:
    jQery总结01
    抽象类和接口精华
    JS基础之开篇
    HTML常见元素集锦
    bzoj3626 [LNOI2014]LCA
    bzoj3223 Tyvj 1729 文艺平衡树
    bzoj3196 Tyvj 1730 二逼平衡树
    bzoj3295 [Cqoi2011]动态逆序对
    bzoj3514 Codechef MARCH14 GERALD07加强版
    bzoj3932 [CQOI2015]任务查询系统
  • 原文地址:https://www.cnblogs.com/hanzhecheng/p/4776385.html
Copyright © 2011-2022 走看看