C#中引用类型变量的“ref”有什么用?

C#中引用类型变量的“ref”有什么用?

我理解如果我传递一个值类型(intstruct等)作为参数(没有ref关键字),该变量的副本将传递给该方法,但如果我使用该ref关键字,则传递对该变量的引用,不是新的。

但是使用引用类型(如类),即使没有ref关键字,也会将引用传递给方法,而不是副本。那么ref关键字与引用类型的用途是什么?


举个例子:

var x = new Foo();

以下有什么区别?

void Bar(Foo y) {
    y.Name = "2";}

void Bar(ref Foo y) {
    y.Name = "2";}


慕雪6442864
浏览 767回答 3
3回答

白衣非少年

在某些情况下,您希望修改实际引用而不是指向的对象:void&nbsp;Swap<T>(ref&nbsp;T&nbsp;x,&nbsp;ref&nbsp;T&nbsp;y)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;t&nbsp;=&nbsp;x; &nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;y; &nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;t;}var&nbsp;test&nbsp;=&nbsp;new[]&nbsp;{&nbsp;"0",&nbsp;"1"&nbsp;};Swap(ref&nbsp;test[0],&nbsp;ref&nbsp;test[1]);

慕容森

引用参数不传递函数成员调用中使用的变量的值 - 它们使用变量本身。不是在函数成员声明中为变量创建新的存储位置,而是使用相同的存储位置,因此函数成员中的变量值和引用参数的值将始终相同。引用参数需要ref修饰符作为声明和调用的一部分 - 这意味着当你通过引用传递某些东西时它总是很清楚。
打开App,查看更多内容
随时随地看视频慕课网APP