Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在静态方法中引用非静态对象_C#_Methods_Static_Textbox - Fatal编程技术网

C# 如何在静态方法中引用非静态对象

C# 如何在静态方法中引用非静态对象,c#,methods,static,textbox,C#,Methods,Static,Textbox,我已经创建了一个文本框,并希望在静态方法中引用它。我该怎么做? 在这里这是我的密码 private void Form1_Load(object sender, EventArgs e) { TextBox textbox2 = new TextBox(); textbox2.Text = "A"; } static void gettext() { textbox2.Text = "B"; //here

我已经创建了一个文本框,并希望在静态方法中引用它。我该怎么做? 在这里这是我的密码

    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"; //here is my problem
} 

我不确定您是否理解static的意思,static意味着它属于类而不是类的实例。可能更好的解决方案是创建一个实例方法来设置文本

// 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";
} 

如果您在理解
静态
方面有困难,那么很可能您不需要使用它。静态成员可用于类的所有实例,但不属于任何实例,这意味着静态方法无法访问私有成员。

我不确定您是否理解静态的含义,静态意味着它属于类而不是类的实例。可能更好的解决方案是创建一个实例方法来设置文本

// 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 void gettext(TextBox textbox)
{
    textbox.Text = "B";
}

您应该将文本框作为静态方法的参数

static void gettext(TextBox textbox)
{
    textbox.Text = "B";
}
你可以这样做

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

private void Form1_Load(object sender, EventArgs e)
{
    YourClass.gettext(textbox2);
}
你可以这样做

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

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

可以在加载时创建静态变量集:

private static readonly TextBox _textBox = new TextBox();

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

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

可以在加载时创建静态变量集:

private static readonly TextBox _textBox = new TextBox();

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

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

你不能。您需要一个对象。还要注意,在Form1中的代码textbox2中,Load是方法的本地对象,而不是类的本地对象。在Form1\u Load之外定义Textbox Textbox 2请告诉我如何定义。我是c#新手。有人能告诉我如何在静态方法中对texbox2进行对象引用吗?你不能。您需要一个对象。还要注意,在Form1中的代码textbox2中,Load是方法的本地对象,而不是类的本地对象。在Form1\u Load之外定义Textbox Textbox 2请告诉我如何定义。我是c#新手。有人能告诉我如何在静态方法中对texbox2进行对象引用吗?为什么会被否决?它没有使用
静态
方法,但就我所见,这是一个完全有效的答案,我是否遗漏了什么?也不知道为什么(它没有直接回答明确的问题,是的,但它肯定给出了我心目中可能是最好和最有用的答案)+1为什么这会被否决?它没有使用
静态
方法,但就我所见,这是一个完全有效的答案,我是否遗漏了什么?也不知道为什么(它没有直接回答明确的问题,是的,但它肯定给出了我心目中可能是最好和最有用的答案) +1@user1853846别忘了接受你认为最好的答案(在本例中为劳埃德)@user1853846以防你不知道如何接受答案,或者你为什么要这样做:@user1853846别忘了接受你认为最好的答案(在本例中为劳埃德)@user1853846以防你不知道如何接受答案,或者为什么要这样做:文本框是只读的,从不重新分配,只有文本属性。如果愿意,可以删除readonly并在Load方法上创建TextBox。TextBox为readonly且从不重新分配,仅为Text属性。如果愿意,可以删除readonly并在Load方法上创建文本框。