还不太理解ref、out参数的,进来瞧瞧

Code:

  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Text;   
  5.   
  6. namespace RefOut   
  7. {   
  8.     class Program   
  9.     {   
  10.      
  11.         static void Main(string[] args)   
  12.         {   
  13.             int age = 10;   
  14.             incAge(age);   
  15.             Console.WriteLine("在Main函数中age的值是{0}",age);//不会打印20,却还是打印出10   
  16.          //因为通过incAge函数传参 --是“值传递”,相当于把age变量的值“复制了一份”而已   
  17.          //尽管incAge函数中age值发生改变,但不会对main函数中的age产生影响,因为这两个age根本不是同一个变量   
  18.   
  19.             int score = 80;   
  20.             incScore(ref score);   
  21.             Console.WriteLine("在Main函数中score的值是{0}", score);//会打印出81   
  22.             //使用ref 关键字后,会传递变量的引用,当变量在外部发生改变时,Main函数中也会改变。   
  23.   
  24.             int i;   
  25.             InitVal(out i);//使用out参数  为了将变量在InitVal函数中赋初始值   
  26.             Console.WriteLine("在Main函数中i的值为{0}",i);//打印出100     
  27.             Console.ReadKey();   
  28.         }   
  29.         static void incAge(int age)    
  30.         {   
  31.             age +=10;  //age=age+10 =10+10   
  32.             Console.WriteLine("在incAge函数中age的值是{0}",age);//打印出 20   
  33.         }   
  34.         static void incScore(ref int score)    
  35.         {   
  36.             score++;   
  37.             Console.WriteLine("在incScore函数中score的值是{0}",score);//打印出81   
  38.         }   
  39.         static void InitVal(out int i)    
  40.         {   
  41.             i = 100;   
  42.             Console.WriteLine("在InitVal函数中i的值是{0}",i);//打印出100   
  43.         }   
  44.     }   
  45. }   

 

时间: 2024-09-24 22:17:23

还不太理解ref、out参数的,进来瞧瞧的相关文章

英伟达CEO黄仁勋:我们正处在超级摩尔定律时代,我不太理解英特尔的战略

我们正在进入一个"超级摩尔定律"时代 新智元:中国购买英伟达GPU最多的公司是哪一家?在英伟达全球的布局里,中国占多少份额?      黄仁勋:在中国的互联网公司当中,我们和百度的合作时间是最长的,我们在AI方面的合作,可能已经有五到六年的时间了,李彦宏和他百度的团队,一直在这个方面有坚定的探索.百度是我们一个非常大的客户,非常好的客户,非常好的合作伙伴.其他的GPU大客户也是互联网公司,因为他们有大量的数据需要处理,所以使用GPU是非常自然的事情. 现在还有另外一个非常大的机会,实时

java基础-对于这段图灵机器人调用代码,我不太理解,可以帮帮我么?

问题描述 对于这段图灵机器人调用代码,我不太理解,可以帮帮我么? 主类 enter code here package zlexample.tuling; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; public class MainActivity extends ActionBarActivity implements HttpGetDataListener { private Http

C# 中,参数传递用ref外部参数还是对象?

问题描述 C# 中,参数传递用ref外部参数还是对象? 一个客户端程序,用异步方法连接服务器,需要回传几个参数,之前老师写的代码用了很多ref参数,但是asnyc方法不能用ref参数,怎么办?全部用对象吗?代码改动好大 解决方案 可以用函数返回值模拟,返回值返回一个结构体,包含所有原先ref的参数,在调用async返回以后,再包装一层,转换为ref参数. 解决方案二: 这样做,还不如直接创建对象传递参数简单啊

opencv最新版本问题,不太理解

问题描述 opencv最新版本问题,不太理解 opencv最新版本opencv4.4.11中include有两个文件夹 opencv和opencv2,请问这和之前的opencv2.0只有一个include opencv 有什么区别啊?为什么现在的版本都包含两个文件夹,新版本中opencv2有什么作用? 解决方案 估计头文件有升级,看是否出现了一些新功能的头文件,所以用不同文件夹区分 解决方案二: 分为两个是出于向前兼容性的考虑,这样原先的源代码可以方便地移植到新版本而不会编译出错.

java-正在学习VC#,其中get和set的作用不太理解

问题描述 正在学习VC#,其中get和set的作用不太理解 正在学习VC#,其中get和set的作用不太理解,不用它们,像java那样只使用字段定义不行么 解决方案 java也有get/set方法,C#只是更进一步,简化了它们的写法.java中是类型 get属性名() { ... }void set属性名(类型 value) { ... }

java 函数问题不太理解语句的含义

问题描述 java 函数问题不太理解语句的含义 import java.applet.applet; import java.awt.*; public class example4_12 extends applet { Button redbutton; public void init() { redbutton = new Button("我是一个红色的按钮:"); redbutton.setBackground(color.red); add(redbutton); //这句

java源码-这个怎么写啊,求大神教导,面向对象的还不太会

问题描述 这个怎么写啊,求大神教导,面向对象的还不太会 求大神?????????????????????????????????????????????????????????????????????? 解决方案 http://zhidao.baidu.com/link?url=XUwMNIdLbsZHvNoWxg_Rrh_HLfQY2v1HuRf4E6dFD6JogqMy0F_hxfwFNgFY4vyfwXBgsSTfzoLV40GF7k0Uw_

java多线程问题-有一道Java面试题,没太理解明白,求大神指点啊~

问题描述 有一道Java面试题,没太理解明白,求大神指点啊~ package test2; /** 设计4个线程,其中两个线程每次对i增加1,另外两个线程对i每次减少1 @author liuyu * */ public class Test { private int i ; private synchronized void inc(){ i ++; System. out .println(Thread.currentThread().getName()+ "--inc--" +

python 迭代器-Python迭代器不是太理解

问题描述 Python迭代器不是太理解 我刚学Python,看到迭代器的概念,不太理解,求大神具体解释一下,十分感谢. 解决方案 http://blog.csdn.net/moxiaomomo/article/details/22598613 解决方案二: python迭代器Python 迭代器Python:迭代器