• 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则用在要要被调出使用的方法修改调出使用者的引用的时候。
  • 相关阅读:
    开发者最好的推广平台
    [ERR] 2006
    PS通道
    PS图层样式
    PS 图层 蒙版
    科研狗的基本绘图技巧 | PS | AI
    memcached的常规操作:增删改查【转】
    mysql:pt-online-schema-change 在线修改表、删除表数据【转】
    HAProxy的四层与七层的区别及透传IP实战案例【转】
    【springBoot】SpringBoot修改启动logo图案
  • 原文地址:https://www.cnblogs.com/who-else/p/5871415.html
Copyright © 2020-2023  润新知