如何在静态方法中引用非静态对象
本文关键字:静态 对象 引用 静态方法 | 更新日期: 2023-09-27 18:03:30
我创建了一个文本框,并希望在静态方法中引用它。我怎么能做到呢?这是我的代码
private void Form1_Load(object sender, EventArgs e)
{
TextBox textbox2 = new TextBox();
textbox2.Text = "A";
}
static void gettext()
{
textbox2.Text = "B"; //here is my problem
}
您需要以某种方式将其传递到静态方法中,最简单的选择是展开方法签名以接受文本框:
static void gettext(TextBox textBox)
{
textBox.Text = "B"; //here is my problem
}
您应该将文本框作为静态方法的参数
static void gettext(TextBox textbox)
{
textbox.Text = "B";
}
我不确定你理解静态是什么意思,静态意味着它属于class而不是类的INSTANCE。可能一个更好的解决方案是创建一个实例方法来设置文本。
// private variable
private TextBox textbox2;
private void Form1_Load(object sender, EventArgs e)
{
// refers to private instance variable
textbox2 = new TextBox();
textbox2.Text = "A";
}
private void gettext()
{
// refers to private instance variable
textbox2.Text = "B";
}
如果你理解static
有困难,很可能你不需要使用它。静态成员可用于类的所有实例,但不属于任何一个实例,这意味着静态方法不能访问私有成员。
你可以这么做
static void gettext(TextBox textbox2)
{
textbox2.Text = "B";
}
代码
private void Form1_Load(object sender, EventArgs e)
{
YourClass.gettext(textbox2);
}
您可以在Load:
上创建一个静态变量集private static readonly TextBox _textBox = new TextBox();
private void Form1_Load(object sender, EventArgs e)
{
_textBox.Text = "A";
}
static void gettext()
{
_textbox2.Text = "B";
}