ошибка и решение для статического метода C# не могут получить доступ к нестатическим членам
]
error: требуется ссылка на объект
]]] Следующий фрагмент кода демонстрирует эту проблему:
]namespace WindowsApplication1
{
public partial class Form1 : Form
{
...
private static void SumData(object state)
{
...
setTextboxText(result); // 错误:非静态字段、方法或属性
}
}
}
причина проблемы
]] Сообщение об ошибке указывает, что статический метод sumdata
пытается вызвать нестатический член setTextboxtext
. Статический метод может только получить доступ только к статическим членам, в то время как доступ к нестатическим членам требует ссылки на объект класса, к которому он принадлежит.
solutions
]есть несколько способов исправить эту ошибку:
] setTextboxtext
для static: public static void setTextboxText(int result)
]]
, однако, если метод setTextboxText
требует доступа к переменной экземпляра, его нельзя установить на статический.
Static Singleton Call
setTextboxtext :
]]
class Form1
{
public static Form1 Instance; // 单例
...
private static void SumData(object state)
{
...
Instance.setTextboxText(result);
}
}
form1 , exant
должен быть установлен в текущий экземпляр: exante = this;
. ]
]
]
]
private static void SumData(object state)
{
...
Form1 frm1 = new Form1();
frm1.setTextboxText(result);
}
form1 уже существует, этот метод не может работать. ]
]
как метод нестатического экземпляра (принадлежит
form1 :
]
private void SumData(object state)
{
...
setTextboxText(result);
}
это обычно лучшее решение, потому что оно сохраняет инкапсуляцию кода и обслуживаемость. ]
для получения дополнительной информации, пожалуйста, обратитесь к документации MSDN.]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3