zoukankan      html  css  js  c++  java
  • java 和 c#返回值方法

    java 和 c#都是应用很广泛的语言,也互有优劣。

    这两者都是面向对象的语言,在一个方法中如果类型不是void那么是需要return一个返回值的。

    但是如果想要返回多个值该怎么办?

    排除直接返回一个对象(User user = new User)的情况,先拿java来说

    1、将返回值拼接成一个字符串,然后再解析字符串;

    2、new一个Map对象,以键值对的形式return

    当然还有返回List、 JSON等方法,不过总的来说都算是只有一个返回值。

    如果我一个方法已经写好啦,返回的是Boolean类型,后来又想再返回一个String字符串,上面的方法固然可行,不过总感觉有点拐弯抹角

    而在 c# 中,就有这么一种直来直去的方法 ref 和 out 关键字

    代码如下:

    class Program
        {
            static void Main(string[] args)
            {
               int a=3;
               int b=2;
               int c=0;
               int reduce = Change(a,b,ref c);
               Write(reduce); //输出的是 1 
               Write(c); //输出的是 5 
          }  
            static int Change(int a,int b,ref int c)
            {
                c = a + b;
                return a - b;
            }
        } 

    如上,最终输出的结果是:1 和 5 ,这样就实现了返回多个值的功能

    out关键字用法和ref一样

    class Program
        {
            static void Main(string[] args)
            {
               int a=3;
               int b=2;
               int reduce = Change(a,b,out c);
               Write(reduce); //输出的是 1 
               Write(c); //输出的是 5 
          }  
            static int Change(int a,int b,out int c)
            {
                c = a + b;
                return a - b;
            }
        } 

    需要注意的是: 在方法定义和调用方法时都必须显式的使用  ref、out 关键字

    ref和out最主要的区别是:

    ref将参数的参数值和引用都传入方法中,所以ref的参数的初始化必须在方法外部,进行,也就是ref的参数必须有初始化值,否则程序会报错

    out不会将参数的参数值传入方法中,只会将参数的引用传入方法中,所以参数的初始化工作必须在其对用方法中进行,否则程序会报错

  • 相关阅读:
    浏览器和node中的event loop的区别
    path.resolve(dir)与path.join(__dirname,dir)的区别
    如何在typescript项目中使用eslint
    eslint无法检测ts类型错误
    todo
    brew update 卡住
    async await原理
    node的require
    Hive表头导出成csv文件
    算法--决策树
  • 原文地址:https://www.cnblogs.com/banma/p/11214393.html
Copyright © 2011-2022 走看看