Error y la solución para el método estático C# no pueden acceder a miembros no estáticos
Error: referencia de objeto requerido
]El siguiente fragmento de código demuestra este problema:
namespace WindowsApplication1
{
public partial class Form1 : Form
{
...
private static void SumData(object state)
{
...
setTextboxText(result); // 错误:非静态字段、方法或属性
}
}
}
causa del problema
] El mensaje de error indica que el método estático sumdata
intenta llamar a un miembro no estático setTextBoxText
. Un método estático solo puede acceder a miembros estáticos, mientras que acceder a miembros no estáticos requiere una referencia al objeto de la clase a la que pertenece.
soluciones
Hay varias formas de corregir este error:
setTextBoxText
a static: public static void setTextboxText(int result)
]
Sin embargo, si el método settextBoxText
requiere acceso a la variable de instancia, no se puede configurar en Static.
static singleton call
settextBoxText :
]
class Form1
{
public static Form1 Instance; // 单例
...
private static void SumData(object state)
{
...
Instance.setTextboxText(result);
}
}
en el constructor de form1 ,
instancia debe establecerse en la instancia actual:
instancia = this; .
en el método de llamada:
private static void SumData(object state)
{
...
Form1 frm1 = new Form1();
frm1.setTextboxText(result);
}
Si la instancia de form1 ya existe, este método no puede funcionar.
sumdata
como un método de instancia no estática (pertenece a form1
): private void SumData(object state)
{
...
setTextboxText(result);
}
Esta suele ser la mejor solución porque mantiene la encapsulación del código y la capacidad de mantenimiento.
Para obtener más información, consulte la documentación de MSDN.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3