c# 基本知识 ref 和 out

一:首先两者都是引用传递,都是按地址传递的。

二: 区别

(1)ref 默认必须初始化,out 不需要显式初始化。例如:

1   int num1=10;
2
3        int num2;
4
5       refMethod(ref num1);
6
7       outMethod(out num2);

(2)必须在方法返回之前为 out 参数赋值,ref则不是必须的,例如:

1  public static void refMethod(ref int num)
2         {
3             num = 30; //不是必须的
4         }
5         public static void outMethod(out int num)
6         {
7             num = 8; //必须在方法返回之前赋值
8         }

或者说ref是有进有出,out是只出不进 。

时间: 2024-08-04 17:45:46

c# 基本知识 ref 和 out的相关文章

C#参数知识盘点,形/实参、值/引用传递、ref、out、in、params、可选、命名等

引言 参数,也叫参变量,是一个变量.在方法签名中随处可见,实现了不同方法间的数据传递,基本上充斥在代码的各个角落里.实参是通过方法调用传递到方法的值的名称,形参是方法期望接收的值.在方法签名或者原型中,方法名称后的括号包含方法的参数及其类型的完整列表.参数声明指定参数中存储的值的类型.大小和标识符.然而小小参数的背后其实也是有着大学问的,所以本篇博文,您可以和博主一起把C#里面各式各样的参数复习一遍.我们先简单回顾一下各种各样的参数概念,对不同类型参数的使用场景有一个了解,再慢慢深入探讨参数的传

NHibernate框架与BLL+DAL+Model+Controller+UI 多层架构十分相似--『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)

原文://http://blog.csdn.net/wb09100310/article/details/47271555 1. 概述 搭建了Spring.NET+NHibernate的一个数据查询系统.之前没用过这两个框架,也算是先学现买,在做完设计之 后花了一周搭建成功了.其中,还加上了我的一些改进思想,把DAO和BLL之中相似且常用的增删改查通过泛型T抽象到了DAO和BLL的父类中,其DAO 和BLL子类只需继承父类就拥有了这些方法.和之前的一个数据库表(视图)对应一个实体,一个实体对应一

2015-2016前端知识体系

一.框架与组件 ?bootstrap等UI框架设计与实现 伸缩布局:grid网格布局 基础UI样式:元素reset.按钮.图片.菜单.表单 组件UI样式:按钮组.字体图标.下拉菜单.输入框组.导航组.面包屑.分页.标签.轮播.弹出框.列表.多媒体.警告 响应式布局:布局.结构.样式.媒体.javascript响应式 第三方插件:插件管理 ?jQuery.zepto使用原理以及插件开发 支持amd.cmd.全局变量的模块化封装 $.fn.method = function(){} ?mvc/mvv

路由知识之ip route 命令中的疑惑

1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小.应用或IP源地址等属性来选择转发路径. ip rule 命令: Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 添加:del 删除: llist 列表) SELECTOR := [ from PREFIX

网络基础知识查询

第一章.基础网络概念 1.1 网络是个什么玩意儿 全世界的人种有很多,人类使用的语言种类也多的很.那如果你想要跟外国人沟通时,除了比手划脚之外,你要如何跟对方讲话? 大概只有两种方式啰,一种是强迫他学中文,一种则是我们学他的语言,这样才能沟通啊.在目前世界上的强势语言还是属于英语系国家, 所以啰,不管是啥人种,只要学好英文,那么大家都讲英文,彼此就能够沟通了.希望不久的未来,咱们的中文能够成为强势语言啊! 这个观念延伸到网络上面也是行的通的,全世界的操作系统多的很,不是只有 Windows/Li

STL"源码"剖析-重点知识总结

STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略多 :) 1.STL概述 STL提供六大组件,彼此可以组合套用: 容器(Containers):各种数据结构,如:vector.list.deque.set.map.用来存放数据.从实现的角度来看,STL容器是一种class template. 算法(algorithms):各种常用算法,如:sort.search.copy.erase.从实现的角度来看,STL算法

Logback相关知识汇总

例如:%-4relative 表示,将输出从程序启动到创建日志记录的时间 进行左对齐 且最小宽度为4格式修饰符,与转换符共同使用:可选的格式修饰符位于“%”和转换符之间.第一个可选修饰符是左对齐 标志,符号是减号“-”:接着是可选的最小宽度 修饰符,用十进制数表示.如果字符小于最小宽度,则左填充或右填充,默认是左填充(即右对齐),填充符为空格.如果字符大于最小宽度,字符永远不会被截断.最大宽度 修饰符,符号是点号"."后面加十进制数.如果字符大于最大宽度,则从前面截断.点符号“.”后面

mysql 索引相关知识

由where 1 =1 引发的思考 最近工作上被说了 说代码中不能用 where 1=1,当时觉得是应该可以用的,但是找不到什么理据, 而且mysql 语句优化这方面确实很薄弱 感觉自己mysql方面是知识还是不够哇 得好好研究研究 还有发现 很多知识点 光看的话根本记不住,也不深刻.还是得亲手实践下 so  ~~~ 挫折越多进步越快 1.关于sql语句大小问题 1)mysql默认情况下没有设置 root用户密码 给mysql的root用户设置密码先 [[email protected] ~]$

C#基础知识篇(三)-----------C#笔记

一.方法 1. 什么叫做方法? 方法就是对一段代码的重用的机制. 2. 方法的定义: [访问修饰符] [static] 返回值类型 方法名() { 方法体; } 注意:用[]修饰的都是可选的. 3. 需要注意的细节: 命名规则:方法名开头大写,参数名开头小写,参数名.变量名要有意义. 4. 方法的参数: 1>在方法名后面括号内定义变量就叫做定义这个方法的参数(形参). 2>在方法()中我们定义多个参数时,参数之间用逗号分隔,不管参数之间的类型是否相同,都不能像定义同类型的多个变量时:如:int