ref关键字

货郎大叔 2019-02-16 10:46:35

namespace ConsoleApp1
{
class Person
{
public string name = "张三";
}
class Program
{
public static void ValueMethod(Person person)
{
person.name = "李四";
}
public static void ReferenceMethod(ref Person person)
{
person.name = "王二麻子";
}
static void Main()
{
Person person1 = new Person();
ValueMethod(person1);
Console.WriteLine(person1.name); //输出李四
Person person3 = new Person();
ReferenceMethod(ref person3);
Console.WriteLine(person3.name); //输出王二麻子
Console.ReadKey();
}
}
}

关于ref关键字:ref参数:有进有出。参数的值可以传进函数,并且对参数所做的任何修改都将反映到该变量中。

但是,通过上面的两个方法,一个不用ref,一个用了ref,看不出使用ref关键字有何意义啊
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
平底锅锅锅 2019-02-26
  • 打赏
  • 举报
回复
没啥区别。ref类似指针
  • 打赏
  • 举报
回复
另外要记住,在 .net 中 ref 比 byval 性能差,所以轻易不会用 ref。 而那些只是学过 c/c++ 语言的人可能以为相反的结论。毕竟 .net 机制根本不是传统的 c/c++ native 机制,不可以用后者套用前者。
  • 打赏
  • 举报
回复
“对参数所做的任何修改”在这里,就是要让变量引用其它对象。你还是引用原来的对象,根本没有修改。
  • 打赏
  • 举报
回复
因为你的 ReferenceMethod 方法中根本没有修改 person,你只是修改了 person.name。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧