Почему запуск этого кода С# показывает ошибку в F1();
в Майн?
namespace Project1
{
public partial class Program1
{
private void F1()
{
Console.WriteLine("F2");
}
private void F2()
{
Console.WriteLine("F1");
}
static void Main(string[] args)
{
F1();
}
}
}
Это консольное приложение. Он работает, если я определяю объект класса Program1
. Но когда я пробую это в приложении Windows Form, я могу поставить F1();
в событии button_click
и выполняется без ошибок без определения объекта Class Form1
?
Вы не определили методы как static
. Поэтому вам нужно сначала создать экземпляр вашего класса, а затем вызвать их с помощью этого экземпляра.
Если вы хотите напрямую вызвать методы, вы можете сделать их static
. В этом случае, поскольку вы, кажется, просто показываете статический текст, было бы хорошо сделать это. Однако часто методы действительно должны действовать на экземпляры и поэтому должны быть названы таковыми. Вы можете посмотреть на этот вопрос, который обсуждает, когда имеет смысл сделать ваши методы static
.
Ниже приведены две альтернативы:
namespace Project1
{
public partial class Program1
{
private void F1()
{
Console.WriteLine("F1");
}
private void F2()
{
Console.WriteLine("F2");
}
static void Main(string[] args)
{
var program1 = new Program1();
program1.F1();
}
}
}
ИЛИ...
namespace Project1
{
public partial class Program1
{
static private void F1()
{
Console.WriteLine("F1");
}
static private void F2()
{
Console.WriteLine("F2");
}
static void Main(string[] args)
{
F1();
}
}
}
BTW, я изменил ваш текст WriteLine, чтобы отразить вызываемую функцию.