将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关键字与引用类型参数一起使用的优点是什么

作为开发人员,如果不更改引用指向的内容,那么通过使用ref关键字将引用类型参数传递给方法,我能获得什么?

不管怎样,这是通过引用传递引用类型的唯一目的,如果你要更改引用所指的内容

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