为什么引用未通过

时间:2019-02-18 13:22:13

标签: c# .net

我想在触发事件时将字段引用传递给我的方法,但由于我的字段具有相同的值,因此未传递引用。

这是我的代码:

private uint _myNumberField;

private void TextBox_OnTextChanged(object sender, TextChangedEventArgs e)
{ 
    HandleTextBoxChanged(sender, _myNumberField);
}

private void HandleTextBoxChanged(object textBoxObject, uint myNumber)
{
    var textBox = textBoxObject as TextBox;

    if (textBox == null)
        return;

    myNumber = 123;
}

触发TextBox_OnTextChanged事件后,字段_myNumberField的值应为123,但值应为0。

2 个答案:

答案 0 :(得分:3)

您需要提供myInt作为参考,而不是,这是通过在代表上使用ref关键字完成的:< / p>

delegate void HandleTextBoxChanged(object, ref uint);

但是首先在_myNumberField中直接更新HandleTextBoxChanged会更好吗?

答案 1 :(得分:2)

使用ref关键字:

private uint _myNumberField;

private void TextBox_OnTextChanged(object sender, TextChangedEventArgs e)
{ 
    HandleTextBoxChanged(sender, ref _myNumberField);
}

private void HandleTextBoxChanged(object textBoxObject, ref uint myNumber)
{
    var textBox = textBoxObject as TextBox;

    if (textBox == null)
        return;

    myNumber = 123;
}

在指定字段名称之前,请确保在调用方上也使用ref。有关如何使用ref的更多信息,请参见this document

就像其他人已经说过的那样,这不是最好的方法。但是要回答您的问题,在C#中,当您处理值类型并希望通过引用传递时,需要使用ref