将ref关键字与引用类型参数一起使用有什么好处?

Ran*_*ndy 0 c# reference ref

作为开发人员,如果不更改引用所指向的参数类型参数,则使用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)

如果我从前者中获得任何或者作为开发人员的东西有什么区别(除了在我的方法中新建传递参数的能力之外)?

提前致谢,

D S*_*ley 7

作为开发人员,如果不更改引用所指向的参数类型参数,则使用ref关键字将该参数传递给方法,我会获得什么?

无论如何 - 这是通过引用传递引用类型的唯一目的是,如果您要更改引用所引用的内容.

公平地说 - 它让你有能力改变未来的行为,这将是虐待狂和残忍......

  • 除了没有获得任何东西,我会说你输了.既然`ref`在那里,读者希望以某种方式改变引用,因为为什么它会在那里呢?了解参考文献永远不会改变是一个惊喜,让读者摆脱困境. (4认同)