我想在触发事件时将字段引用传递给我的方法,但由于我的字段具有相同的值,因此未传递引用。
这是我的代码:
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。
答案 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
。