zoukankan      html  css  js  c++  java
  • ref

    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则用在要要被调出使用的方法修改调出使用者的引用的时候。
  • 相关阅读:
    前端开源项目周报0408
    iOS开源项目周报0406
    安卓开源项目周报0405
    iOS开源项目周报0330
    安卓开源项目周报0329
    前端开源项目周报0328
    vue项目搭建
    微信中h5页面用window.history.go(-1)返回上一页页面不会重新加载问题
    h5移动端页面meta标签
    js中break跳出多层循环
  • 原文地址:https://www.cnblogs.com/who-else/p/5871415.html
Copyright © 2011-2022 走看看