c#学习2——值参数、引用参数、输出参数
来源:互联网 发布:c语言网站 编辑:程序博客网 时间:2024/06/05 18:41
值参数、引用参数、输出参数
2.1值参数(value parameters)未用 ref 或 out 修饰符声明的参数为值参数。值参数在调用该参数所属的函数成员(方法、实例构造函数、访问器或运算符)时开始存在,并用调用中给定的自变量的值初始化。当返回该函数成员时值参数停止存在。出于明确赋值检查的目的,值参数被视为初始已赋值。
2.2 引用参数(reference parameters)
用 ref 修饰符声明的参数是引用参数。引用参数不创建新的存储位置。相反,引用参数表示的是那个在对该函数成员调用中被当作“自变量”的变量所表示的同一个存储位置。因此,引用参数的值总是与基础变量相同。
下面的明确赋值规则适用于引用参数。
●变量在可以作为引用参数在函数成员调用中传递之前,必须已明确赋值即必须被初始化。
●在函数成员内部,引用参数被视为初始已赋值。
●在结构类型的实例方法或实例访问器内部,this 关键字的行为与该结构类型的引用参数完全相同
2.3输出参数(output parameters)
用 out 修饰符声明的参数是输出参数。输出参数不创建新的存储位置。相反,输出参数表示的是那个在对该函数成员调用中被当作“自变量”的变量所表示的同一个存储位置。因此,输出参数的值总是与基础变量相同。下面的明确赋值规则应用于输出参数。变量在可以作为输出参数在函数成员调用中传递之前不一定要明确赋值。
●在正常完成函数成员调用之后,每个作为输出参数传递的变量都被认为在该执行路径中已赋值。
●在函数成员内部,输出参数被视为初始未赋值。
●函数成员的每个输出参数在该函数成员正常返回前都必须已明确赋值。
●在结构类型的实例构造函数内部,this 关键字的行为与结构类型的输出参数完全相同
引用参数和值参数区别
引用参数相当于是引用参数的地址,函数定义时和函数调用时都必须用 ref 关键字,在调用函数参数的值改变将会影响到参数的实际值,而值参数传递时,先开辟一块内存块,然后拷贝一份放到新开辟的内存块中,这样调用时是调用新内存块中的值,修改也不会使原来的值改变。
引用参数和输出参数区别
引用参数在传递之前必须进行初始化,而输出参数传递不需要。两个都可以在内部修改他的值
具体什么时候用,ref主要还是对于值类型,out可以处理一个没有初始化的数组。
举例:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void valueparameters(int x, int y)
{
++x;
++y;
}
static void referenceparameters(ref int x, ref int y)
{
++x;
++y;
}
static void outputparameters(out int m, out int n, ref int z)
{
m = 12;
n = 12;
z++;
}
static void Main(string[] args)
{
int x = 10;
int y = 20;
valueparameters(x, y);
Console.WriteLine("x={0},y={1}", x, y);
referenceparameters(ref x, ref y);
Console.WriteLine("x={0},y={1}", x, y);
int m, n;
int z = 1;
outputparameters(out m, out n, ref z);
Console.WriteLine("m={0},n={1},z={2}",m,n,z);
}
}
/*结果:
x=10,y=20
x=11,y=21
m=12,n=12,z=2
请按任意键继续. . .
*/
- c#学习2——值参数、引用参数、输出参数
- C#参量参数、输出参数、引用参数、值参数
- C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习
- C#中的值参数,引用参数及输出参数
- C#的值参数 输出参数 引用参数
- C#基础学习--方法参数的种类,值参数,引用参数(ref),输出参数(out),数组参数(params)
- 值参数,输出参数和引用参数
- C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习(一)
- C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习(一)
- C#参数的传递:值传递、引用传递、输出参数
- C#中值参数、引用参数、输出参数的区别
- 值参数、引用参数、输出参数、数据参数
- C#学习笔记二 引用参数和值参数
- C#的引用参数和值参数
- C#的引用参数和值参数
- C#引用参数和输出参数的区别
- C#引用参数和输出参数的区别
- C# 参考之方法参数关键字:参数数组params、引用参数ref及输出参数out
- gridview无数据时候显示表头
- fffdfd
- JAVA中浅复制与深复制
- 【转】佛家的133个经典哲理转载 分享该日志 评论 举报
- 【转载】linux下的samba安装及配置
- c#学习2——值参数、引用参数、输出参数
- 在 win xp 系统上手工安装sybase的ODBC驱动
- 利用串行化实现ArrayList深拷贝
- WebSphere上用jtds作为sql驱动的配置
- CSDN上第一解决了问题
- VC2005中编译警告的解决办法
- WinPM使用问题
- 页面配色器
- HDU 1233 还是畅通问题