博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ref和out
阅读量:6424 次
发布时间:2019-06-23

本文共 1470 字,大约阅读时间需要 4 分钟。

 1、引用类型(ref、out)与值类型

引用类型都是引用传递(两者都是按地址传递的),就是对传递进去的变量的修改会反映在原来的变量上; 

值类型当不用 out或者 ref的时候就是值传递,就是对传递进去的变量的修改不会反映在原来的变量上,修改的只是原来变量的一个副本。

2、重载

ref 和 out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法;

如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载

3、初始化

ref 先初始化;

out 在方法里初始化。

4、ref 有进有出,out 只出不进

 以下输出结果 :i = 9

                   ref j =  36

                   q1 = 100

           out   q2 = 103 

refout.cs
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 static void fun(int m) 11 { 12 int k = 4; 13 m = k * m; 14 } 15 static void fun(ref int m)//可重载 16 {
17 int g = 4; 18 m = g * m; 19 } 20 static void func(int q) 21 {
22 q += 3; 23 } 24 static void func(out int q) 25 {
26 q = 100; 27 q += 3; 28 } 29 static void Main(string[] args) 30 {
31 //引用传递 32 int i=9,j=9; 33 int q1=100,q2; 34 fun(i); 35 Console.WriteLine("ref i ={0}",i); 36 //值传递 37 fun(ref j); 38 Console.WriteLine("j = {0}",j); 39 func(q1); 40 Console.WriteLine("q1 = {0}",q1); 41 func(out q2); 42 Console.WriteLine("out q2 = {0}",q2); 43 } 44 } 45 }

转载地址:http://swyga.baihongyu.com/

你可能感兴趣的文章
mongodb int型id 自增
查看>>
【转】关于大型网站技术演进的思考(十八)--网站静态化处理—反向代理(10)...
查看>>
Java中的4种代码块
查看>>
Ocelot(七)- 入门
查看>>
生成水杯热气
查看>>
程序员工作心法
查看>>
三个常用的PHP图表类库
查看>>
python中异常处理--raise的使用
查看>>
高中数学与初中数学的接轨点
查看>>
python 安装第三方模块
查看>>
Whitelabel Error Page 专题
查看>>
Spring Data Redis—Pub/Sub(附Web项目源码)
查看>>
RSD和wlwmanifest是什么
查看>>
Linkedin工程师是如何优化他们的Java代码的(转)
查看>>
winfrom 如何保存datagridview中的某一行数据
查看>>
面向领域驱动的应用开发框架Apworks 2.0发布
查看>>
开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)
查看>>
ref和out
查看>>
黑客教父详解账号泄露全过程:1亿用户已泄露
查看>>
程序员必须软件
查看>>