将ref关键字与引用类型参数一起使用的优点是什么
本文关键字:是什么 一起 关键字 ref 引用 类型参数 | 更新日期: 2023-09-27 18:21:25
作为开发人员,如果不更改引用指向的内容,通过使用ref关键字将引用类型参数传递给方法,我能获得什么?
我读过带有引用类型参数的ref关键字和"的用法;ref";对于C#中的引用类型变量?以及其他一些。我知道这个主题已经被问了很多次并得到了回答。我相信我在问一个独特的问题。如果你认识其他魔法,请随意记下我的问题。
简单类:
public class Person
{
public Person(string first, string last)
{
FirstName = first;
LastName = last;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
return string.Format("{0} {1}", FirstName, LastName);
}
}
使用关键字"ref"传递表单:
public partial class Form2 : Form
{
private Person _person;
public Form2()
{
_person = new Person("John", "Doe");
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
textBox1.Text = _person.ToString();
base.OnLoad(e);
}
private void button1_Click(object sender, EventArgs e)
{
ChangeLastName(ref _person);
textBox2.Text = _person.ToString();
}
private static void ChangeLastName(ref Person person)
{
person.LastName = "Smith";
}
}
表单传递参数时不使用关键字"ref":
public partial class Form2 : Form
{
private Person _person;
public Form2()
{
_person = new Person("John", "Doe");
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
textBox1.Text = _person.ToString();
base.OnLoad(e);
}
private void button1_Click(object sender, EventArgs e)
{
ChangeLastName(_person);
textBox2.Text = _person.ToString();
}
private static void ChangeLastName(Person person)
{
person.LastName = "Smith";
}
}
如果有什么区别的话,或者作为一名开发人员,我从前者中获得了什么(除了在我的方法中新建传递的参数的能力)?
提前感谢,
作为开发人员,如果不更改引用指向的内容,那么通过使用ref关键字将引用类型参数传递给方法,我能获得什么?
不管怎样,这是通过引用传递引用类型的唯一目的,如果你要更改引用所指的内容
公平地说,它让你有能力在未来改变这种行为,这将是虐待狂和残忍的。。。