• C#之out,ref关键字


    在C#中,我们会见到out,ref关键字,这跟java很不一样,接下来,我们就来了解一番,

    1,out关键字

      概念:一个带有输出参数的的方法(方法的的参数有被out关键字修饰),有义务在方法退出的时候给这个参数一个恰当的赋值,如果没有,方法编译会报错。

      例子:伪代码如下

      static void doMethod(int y,out int ans)

      {

        ans = y*2;//被关键字out修饰的参数ans被赋值

      }

      static void main(string args[]){

          int ans;

          doMethod(90,out ans);//调用带输出参数的方法,也必须使用out关键字修饰

      }

    上面的例子说明,用输出参数返回一个数的一半,看似没有发现out的意义,实际上设计者设计out关键字是有一个很有用的用途的:那就是我们通过out关键字,可以在一个方法中一次就输出多个返回值,如下

      static void doMethod(out string name,out int age,out char sex)

      {

        name = "张三";

        age = "30";

        sex = '1';  

      }

    2,ref关键字

      ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 

      static void Main(string[] args)
      {
        int x = 1;
        int y = 1;
        doSome(ref x);
        doSome(y);
        Console.Write(x+"");
        Console.Write(y + "");

      }
      static void doSome(ref int x)
      {
        x = 10;
      }
      static void doSome( int x)
      {
        x = 10;
      }

    以上伪代码可看出,ref关键字是对变量的引用进行改变,所以doSome(ref int x)输出10,doSome(int x)输出1,另外可以看出,重载时,ref修饰和不修饰的的签名被认为是不同的,重载可以成功。

     

      

    StayHungry 求知若渴 StayFoolish 放低姿态
  • 相关阅读:
    【Web】Google Chrome 浏览器调试禁用缓存
    js基础(对象)
    js基础
    css
    html
    mybatis(mapper映射文件)
    mybatis(核心配置文件的配置)
    linux三种连接方式
    spring
    mybatis(入门案例)
  • 原文地址:https://www.cnblogs.com/wujunjie/p/5799425.html
Copyright © 2020-2023  润新知