如何引用非静态对象在静态方法中(how to reference a non static obje

2019-10-17 19:45发布

我创建了一个文本框,并希望引用它在静态收作方法初探。 我怎样才能做到这一点? 在这里,我的代码

    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
    } 

Answer 1:

您需要将其传递到静态方法不知何故,最简单的方法是只扩大方法签名接受文本框:

static void gettext(TextBox textBox) 
{
    textBox.Text = "B"; //here is my problem
} 


Answer 2:

你应该给你的文本作为参数传递给静态方法

static void gettext(TextBox textbox)
{
    textbox.Text = "B";
}


Answer 3:

我不知道你明白什么静态方法,静态意味着它属于类而不是类的实例。 可能是一个更好的解决问题的方法是创建其中设置文本的实例方法。

// 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 ,可能你并不需要使用它。 静态成员可用于一类的所有实例,但不属于任何人,这意味着静态方法不能访问私有成员。



Answer 4:

你可以这样做

static void gettext(TextBox textbox2) 
{
    textbox2.Text = "B";
} 

而在代码

private void Form1_Load(object sender, EventArgs e)
{
    YourClass.gettext(textbox2);
}


Answer 5:

您可以创建在负载静态变量集:

private static readonly TextBox _textBox = new TextBox();

private void Form1_Load(object sender, EventArgs e)
{
    _textBox.Text = "A";
}

static void gettext()  
{ 
    _textbox2.Text = "B";
} 


文章来源: how to reference a non static object in a static method