新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关C#中ref和out如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
成都创新互联公司2013年至今,先为永顺等服务建站,永顺等地企业,进行企业商务咨询服务。为永顺企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
在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如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。