zoukankan      html  css  js  c++  java
  • 参数的 in out in/out 修饰

    知识点

    • in
    • out
    • in/out

    IN

    一个函数,默认情况下,参数是 in 类型,即传入参数,以C# 中的方法为例:

    不要怀疑,C#直接支持下面的写法:

    static void Main(string[] args)
    {
        Console.WriteLine(GetNewNum(5));
    }
    
    //默认是 in 类型 所以可以不写 in
    public static int GetNewNum(in int num)
    {
        return num + 10;
    }
    

    OUT

    指定了此修饰符,则表示参数不是用于传参的,而是用于返回结果的,因为一般情况下,函数只能返回一个结果,此时就能通过 out方式通过参数返回多个结果,因为只是作为接收返回结果用,所以传入的参数不需要也不允许赋值,当然因为要传值回去,所以在return前必须赋值,例子如下:

    static void Main(string[] args)
    {
        int num2;
        Console.WriteLine(GetNewNum(out num2));
        Console.WriteLine(num2);
    }
    
    public static int GetNewNum(out int num2)
    {
        num2 = 15;
        return 10;
    }
    

    当然现在返回多个参数可以使用 tuple(其实用dict list 作为返回参数也可以带多个参数)

    static void Main(string[] args)
    {
        var result = GetNewNum();
        Console.WriteLine(result.num);
        Console.WriteLine(result.num2);
    }
    
    public static (int num, int num2) GetNewNum()
    {
        return (10, 15);
    }
    

    IN/OUT

    IN/OUT 在C#中可能没听过,不过肯定听过 REF,其实就是这个,即传入的参数既能传值进来,还能传出去,因为要传值回去,所以在return 前必须赋值,例子如下:

    static void Main(string[] args)
    {
        int num = 5;
        var num2 = GetNewNum(ref num);
        Console.WriteLine(num);
        Console.WriteLine(num2);
    }
    
    public static int GetNewNum(ref int num)
    {
        num = num + 10;
        return num;
    }
    

    其他场景

    在MySql 数据库编写存储过程的时候,参数一样有这种概念,一样分为 IN OUT IN/OUT

  • 相关阅读:
    PopupWindow设置动画效果
    android判断是否含有某权限
    每日一更提醒
    利用Pattern和Mather来禁止特殊字符的输入
    Android毛玻璃处理代码(Blur)
    how to render html tag
    数组
    复杂度分析
    书写markdown的利器
    cannot insert multiple commands into a prepared statement问题原因及解决办法
  • 原文地址:https://www.cnblogs.com/DHclly/p/13216783.html
Copyright © 2011-2022 走看看