ref引用类型,数组型参数,out输出参数
ref和out的相同点和不同点
共同点:都是引用传递
不同点:ref的参数在调用之前一定要赋值,在方法调用的过程中可以不要赋值。
out的参数在调用之前可以不赋值,在方法调用的过程中一定要赋值。
//方法的参数
class Program
{
static void Main(string[] args)
{
//值传递
//int num = 5;
//Change(num);
//Console.WriteLine("Main方法中的num为:"+num);
//引用传递
//int[] arr = { 1, 3, 5 };
//Change(arr);
//Console.WriteLine("Main方法中的arr[1]为:" + arr[1]);
//ref参数(引用传递)
//int num=5;
//Change(ref num);//ref参数在调用前一定要赋值
//Console.WriteLine("Main(ref)方法中的num为:" + num);
//out参数(引用传递)
//int num;
//OutChange(out num);
//Console.WriteLine("Main(out)方法中的num为:" + num);
//数组型参数(引用传递)
int result = Sum("*",3,5,6);
Console.WriteLine(result);
}
public static void Change(int number)
{
number = 10;
Console.WriteLine("Change中的number为:" + number);
}
public static void Change(int[] arr)
{
arr[1] = 100;
Console.WriteLine("Change中的arr[1]为:" + arr[1]);
}
public static void Change(ref int number)
{
number = 10;
Console.WriteLine("Change(ref参数)中的number为:" + number);
}
public static void OutChange(out int number)
{
number = 20;
Console.WriteLine("OutChange(out参数)中的number为:" + number);
}
//注意:数组型参数一定要放在参数列表最后
public static int Sum(string op,params int[] num)
{
if(op=="+")
{
int total = 0;
for (int i = 0; i < num.Length; i++)
{
total += num[i];
}
return total;
}
else if (op == "*")
{
int total = 1;
for (int i = 0; i < num.Length; i++)
{
total *= num[i];
}
return total;
}
else
{
Console.WriteLine("运算符只能是+/*");
return -1;
}
}
}
ref引用类型,数组型参数,out输出参数的更多相关文章
- C#方法的六种参数,值参数、引用参数、输出参数、参数数组、命名参数、可选参数
方法的参数有六种,分别是值参数.引用参数.输出参数.参数数组.命名参数.可选参数. 值参数 值参数是方法的默认类型,通过复制实参的值到形参的方式把数据传递到方法,方法被调用时,系统作两步操作: 在栈中 ...
- C#方法参数--值参数,引用参数,输出参数
值参数: 使用值参数,通过复制实参的值到形参的方式,把数据传递到方法,方法被调用的时候,系统做如下操作: 在栈中为形参分配空间: 复制实参到形参. 注意:一个值参数的实参不一定是变量,它可以是任何能够 ...
- Mybatis框架四:输入参数、输出参数
输入参数可以有三种:简单类型,POJO,包装类 关于前两种: http://www.cnblogs.com/xuyiqing/p/8600888.html 这里写一下传递包装类参数: 一个POJO:U ...
- C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习
1)形参 形参顾名思义就是形式上的参数,不是实际的参数,它代替实际传入方法的值.在方法体代码中代表了值本身参与运算.形参定义于参数中,它不同于方法体内局部变量,因为是一个变量,在它的作用域内不允许存在 ...
- lr_save_var() 截取任意字符串长度,以参数形式输出(参数转变量)
Action() { char * desc=(char *)malloc(10); //定义指针变量,以变量形式存放截取到的参数值 // char * aa = "jadkshfkasd ...
- 存储过程: 存储过程(stored procedure)有时也称为sproc。存储过程存储于数据库中而不是在单独的文件中,有输入参数、输出参数以及返回值等。
存储过程示例一: 执行存储过程方法一: 执行存储过程方法二: 存储过程可以定义返回值: 修改存储过程: 利用存储过程查找三个表内的信息: 练习: 超市管理系统:表一:门店仓库表 MenDian ...
- C#中引用参数ref和输出参数out
引用参数 用于按引用传递自变量. 为引用参数传递的自变量必须是具有明确值的变量,并且在方法执行期间,引用参数指明的存储位置与自变量相同. 引用参数使用 ref 修饰符进行声明. 输出参数 用于按引用传 ...
- Java开发笔记(二十六)方法的输出参数
前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...
- C#调用存储过程带输出参数或返回值
CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGI ...
随机推荐
- jQuery Easy UI Accordion(可伸缩的面板)包
Accordion 可伸缩的面板组件.基于panel,示为以下的比率: <!doctype html> <html lang="en"> <head& ...
- ContentType是否大小写区分?
ContentType控制web类型输出.无论是大小写是否区分? 例如: context.Response.ContentType = "application/json"; co ...
- nova-compute[5410]: OSError: [Errno 13] Permission denied: '图像路径'
前几天有 openstack-Nova 创建虚拟机拨弄了一下,结果重新启动后的今天 nova boot 创建虚拟机实例有错误,创建虚拟机出状况 他们是 error 视图 openstack 服务状态 ...
- hdu More is better
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1856 题意:王老师要找一些男生帮助他完成一项工程.要求最后挑选出的男生之间都是朋友关系,可以说直接的, ...
- linux_awk_内部正则过滤
awk -F'\t' '{if($3 !~ /^<p><img/){print $0}}' latex500.db|wc -l
- txt 开关 csv 可通用 工具
Ruby Txt 开关 CSV 常用工具 to require 'csv' namespace :sys_file_conver do desc "把txt数据导入到csv中" t ...
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
原文:使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示 首先来看一看实现的效果: PS:原始的程序中更新曲线数据时添加了过渡的效果,具体可 ...
- mysql 打开远程服务
进mysqlserver 例如下列: Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. ...
- 【转】Appium根据xpath获取控件实例随笔
原文地址:http://blog.csdn.net/zhubaitian/article/details/39754233 如文章<Appium基于安卓的各种FindElement的控件定位方法 ...
- DataTable与实体类的转换
多年前写的DataTable与实体类的转换,已放github 阅读目录 介绍 起因 代码 UnitTest GitHub 介绍 很多年前一直使用Ado.net,后来慢慢转型到其他的orm,在转型过程中 ...