作为开发人员,如果不更改引用所指向的参数类型参数,则使用ref关键字将该参数传递给方法,我会获得什么?
我已经读过两个,带有引用类型参数的ref关键字和C#中引用类型变量的"ref"有什么用?和其他一些人.我知道这个问题已经被问过很多次了.我相信我在问一个独特的问题.如果你认识其他的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);
}
}
Run Code Online (Sandbox Code Playgroud)
使用关键字'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";
}
}
Run Code Online (Sandbox Code Playgroud)
表单传递参数而不使用关键字'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";
}
}
Run Code Online (Sandbox Code Playgroud)
如果我从前者中获得任何或者作为开发人员的东西有什么区别(除了在我的方法中新建传递参数的能力之外)?
提前致谢,
作为开发人员,如果不更改引用所指向的参数类型参数,则使用ref关键字将该参数传递给方法,我会获得什么?
无论如何 - 这是通过引用传递引用类型的唯一目的是,如果您要更改引用所引用的内容.
公平地说 - 它让你有能力改变未来的行为,这将是虐待狂和残忍......