温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#中ref和out如何使用

发布时间:2021-07-07 16:47:39 来源:亿速云 阅读:134 作者:Leah 栏目:编程语言

这篇文章将为大家详细讲解有关C#中ref和out如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在C#中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员(方法、属性、索引器、运算符和构造函数)更改参数的值,并保持该更改。若要通过引用传递参数,请C#使用ref和out传递数组。为简单起见,本主题的示例中只使用了ref关键字。有关ref和out传递数组之间的差异的信息,请参见、C#使用ref和out传递数组。

值类型变量直接包含其数据,这与引用类型变量不同,后者包含对其数据的引用。因此,向方法传递值类型变量意味着向方法传递变量的一个副本。方法内发生的对参数的更改对该变量中存储的原始数据无任何影响。如果希望所调用的方法更改参数值,必须使用ref或out关键字通过引用传递该参数。为了简单起见,以下示例使用ref。

下面的示例演示通过值传递值类型参数。通过值将变量myInt传递给方法SquareIt。方法内发生的任何更改对变量的原始值无任何影响。

//PassingParams1.cs  usingSystem;  classPassingValByVal  ...{  staticvoidSquareIt(intx)  //Theparameterxispassedbyvalue.  //ChangestoxwillnotaffecttheoriginalvalueofmyInt.  ...{  x*=x;  Console.WriteLine("Thevalueinsidethemethod:{0}",x);  }  publicstaticvoidMain()  ...{  intmyInt=5;  Console.WriteLine("Thevaluebeforecallingthemethod:{0}",  myInt);  SquareIt(myInt);//PassingmyIntbyvalue.  Console.WriteLine("Thevalueaftercallingthemethod:{0}",  myInt);  }  }

当调用SquareIt时,myInt的内容被复制到参数x中,在方法内将该参数求平方。但在Main中,myInt的值在调用SquareIt方法之前和之后是相同的。实际上,方法内发生的更改只影响局部变量x。

下面的示例除使用ref关键字传递参数以外,其余与上面代码相同。参数的值在调用方法后发生更改。

//PassingParams2.cs  usingSystem;  classPassingValByRef  ...{  staticvoidSquareIt(refintx)  //Theparameterxispassedbyreference.  //ChangestoxwillaffecttheoriginalvalueofmyInt.  ...{  x*=x;  Console.WriteLine("Thevalueinsidethemethod:{0}",x);  }  publicstaticvoidMain()  ...{  intmyInt=5;  Console.WriteLine("Thevaluebeforecallingthemethod:{0}",  myInt);  SquareIt(refmyInt);//PassingmyIntbyreference.  Console.WriteLine("Thevalueaftercallingthemethod:{0}",  myInt);  }  }

关于C#中ref和out如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI