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方法上创建文本框。