C# 通过引用传递文本框
我目前有一些东西,我想传递一个textbox.text by ref。我不想传递整个textbox,我希望函数在返回其他变量的同时更改文本C# 通过引用传递文本框,c#,byref,C#,Byref,我目前有一些东西,我想传递一个textbox.text by ref。我不想传递整个textbox,我希望函数在返回其他变量的同时更改文本 public int function(int a, int b, string text) { //do something if (a + b > 50) { text = "Omg its bigger than 50!"; }
public int function(int a, int b, string text)
{
//do something
if (a + b > 50)
{
text = "Omg its bigger than 50!";
}
return (a + b);
}
有没有办法通过ref传递Textbox.text并在函数中更改它?传递“整个”Textbox是什么意思?如果您的签名是
public int function(int a,int b,TextBox TextBox)
,那么您传递的只是一个引用,它根本不是很多数据。如果将签名设为公共int函数(int a、int b、ref string text)
,则在传递textBox.text时仍会出现问题,因为您仍将使用text属性的备份字段副本,因此方法不会更新 不能按ref传递属性,只能传递字段或变量
public int function(int a, int b, string text)
{
//do something
if (a + b > 50)
{
text = "Omg its bigger than 50!";
}
return (a + b);
}
发件人:
属性不是变量。它们实际上是方法,因此不能作为ref参数传递
必须使用中间变量:
string tmp = textBox.Text;
int x = function(1, 2, ref tmp);
textBox.Text = tmp;
你为什么不想传递整个文本框?这是传递参考。。。 比如:
我假设问题是您试图将
TextBox.Text
传递给函数的第二个参数(假设您已将其修改为通过引用获取字符串)。通过引用传递字符串是完全有效的,但是属性不能通过引用传递。最好将文本分配给另一个字符串,传递该字符串,然后将文本设置回文本框:
public int function(int a, int b, ref string text)
{
//do something
if (a + b > 50)
{
text = "Omg its bigger than 50!";
}
return (a + b);
}
string text = TextBox.Text;
function(ref text);
TextBox.Text = text;
不能按引用传递属性。可以将
.Text
属性复制到字符串,然后按引用传递该字符串:
void foo()
{
string temp = MyTextBox.Text;
int result = refFunction(ref temp);
MyTextBox.Text = temp;
}
int refFunction(ref string text)
{ ... }
对我来说,这听起来像是你的设计有问题……如果你传递TextBox引用,该方法也将能够更改TextBox的其他属性……这就是我的想法。谢谢