Member 14975654 Ответов: 3

Как вызвать метод в main в C#?


Привет, в настоящее время я изучаю C#. Я хочу запустить следующий метод, но я не знаю, что мне нужно поместить в основной метод, чтобы он успешно построился:

namespace ConsoleApp1
    {
        using System;
        using System.Linq;
        public class Program
        {
            public int[] SwitchLights(int[] a)
            {
                var count = a.Count(t => t == 1);
                for (int i = 0; i < a.Length; i++)
                {
                    var current = count;
                    if (a[i] == 1) count--;
                    if (current % 2 == 1) a[i] = a[i] == 1 ? 0 : 1;
                }
                return a;
            }
        }
    }


Что я уже пробовал:

Я попробовал несколько вещей, но не преуспел. Любая помощь будет оценена по достоинству.

3 Ответов

Рейтинг:
2

BillWoodruff

Как только статический основной метод будет запущен, он немедленно завершится (окно закроется) ... если только вы не используете ReadKey или ReadLine для остановки потока.

Распространенный метод заключается в запуске цикла 'while, который поддерживает процесс/окно до тех пор, пока не будет выполнено некоторое условие выхода.

Вы можете ознакомиться с некоторыми методами консольного программирования здесь: [^]


Рейтинг:
0

Richard MacCutchan

Ваша программа должна включать в себя main метод в классе выглядит следующим образом:

static void Main(string[] args)
{
    // add code here to call other methods of the class.
}


Member 14975654

Спасибо, я подумал об этом, но на самом деле мне было интересно, что там закодировать, чтобы это назвать.

Richard MacCutchan

Основной метод автоматически вызывается фреймворком при запуске программы. Вот почему он должен быть закодирован именно так, как показано на рисунке.

Richard Deeming

- Вот почему он должен быть закодирован именно так, как показано на рисунке."

С некоторыми принятыми вариациями - например:
* static void Main()
* static void Main(string[] args)
* static int Main()
* static int Main(string[] args)

И, начиная с C# 7.1:
* static Task Main()
* static Task Main(string[] args)
* static Task<int> Main()
* static Task<int> Main(string[] args)

Richard MacCutchan

Да, но это только запутывает новичков. Давайте сначала заставим их понять основы.

Рейтинг:
0

OriginalGriff

Цитата:
Спасибо, я подумал об этом, но на самом деле мне было интересно, что там закодировать, чтобы это назвать.

Как сказал Ричард, статика Main метод вызывается автоматически для вас - вот почему сборка может иметь только один статический метод с именем Main, независимо от того, сколько классов она содержит.

Как только вы это сделаете, вы можете вызвать свой метод(ы) по мере необходимости:
using System;
using System.Linq;

namespace ConsoleApp1
    {
        public class Program
        {
            public int[] SwitchLights(int[] a)
            {
                var count = a.Count(t => t == 1);
                for (int i = 0; i < a.Length; i++)
                {
                    var current = count;
                    if (a[i] == 1) count--;
                    if (current % 2 == 1) a[i] = a[i] == 1 ? 0 : 1;
                }
                return a;
            }
            static void Main(string[] args)
            {
                int[] myArray = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
				Program myProg = new Program();
                myArray = myProg.SwitchLights(myArray);
            }
        }
    }