C# ref参数和out参数是什么?

 我来答
muse4498
推荐于2019-10-21 · TA获得超过1.1万个赞
知道小有建树答主
回答量:55
采纳率:95%
帮助的人:9417
展开全部

ref参数是引用,out参数为输出参数。

我写一个控制台的程序来说明一下两者的特点和区别:

class Program

{

public static void RefMethod( ref int i)   //参数使用了ref关键字

{

i++;

}

public static void OutMethod(out int i) //参数使用了out关键字

{

i = 0;  //out参数规定,参数在方法体内必须被初始化。

i++;

}

static void Main(string[] args)

{

int i = 0;

RefMethod(ref i);  //调用时也需要ref关键字

Console.WriteLine("i="+i);//这里打印的结果为i=1,说明ref关键字可以改变i的值。

int j;

OutMethod(out j); //调用时也需要out关键字

Console.WriteLine("j=" + j);//这里打印的结果为i=1,说明ref关键字可以改变i的值。

Console.Read();

}

}

ref和out参数的效果一样,都是通过关键字找到定义在主函数里面的变量的内存地址,并通过方法体内的语法改变它的大小。不同点就是输出参数必须对参数进行初始化。

输出参数和引用参数的区别:

从CLR的角度来看,关键字out和关键字ref是等效的,这就是说,无论使用哪个关键字都会产生相同的元数据和IL代码。但是,C#编译器将两个关键字区别对待,在C#中,这俩个关键字的区别在于哪个方法负责初始化引用对象。如果方法参数标记为out,那么调用者不希望在调用方法之前初始化对象,被调用的方法不能读取对象的值,而且被调用的方法必须返回之前为对象赋值。如果方法的参数标记为ref,那么调用者必须在调用方法之前初始化参数的值,被调用方法可以读取或为参数赋值。

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。  

C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。

C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,因此绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式