作为开发人员,通过使用ref关键字将引用类型参数传递给方法,如果不更改引用指向的内容,我可以获得什么?
我已阅读ref keyword with reference type parameter和What is the use of "ref" for reference-type variables in C#?以及其他一些内容。我知道这个主题已经被问过很多次了。我相信我在问一个独特的问题。如果你认识其他的wize,请随时记下我的问题。
简单的课程:
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";
}
}
如果我从前者中获得任何或者作为开发人员的东西有什么区别(除了在我的方法中新建传递参数的能力之外)?
提前致谢,
答案 0 :(得分:7)
作为开发人员,如果不更改引用所指向的方法,可以通过将引用类型参数传递给使用ref关键字的方法来获得什么?
无论如何 - 通过引用传递引用类型的唯一目的是,如果您要更改引用所引用的内容。
公平地说 - 它让你能够改变将来的行为,这将是虐待狂和残忍......