C# общая структура программы!

157
03 января 2022, 09:40

Я новичок. Писал программу пару недель, сейчас обнаружил, что основной файл проекта это Program.cs, а не Form1.cs )))))

Очень много непонятно. По областям видимости, директивам using.

  1. Глобальные переменные как делать?!!! Пишу программу онлайн бот. Массив пакетов должен быть доступен "всей программе", как сделать!!!? Механизмы.

  2. Почему если using WebSocketSharp; стоит в основном файле, её нужно дублировать и в Form1.cs? (скорее вопрос мелкософту)

  3. Есть ли учебник или методичка именно по структуре программы, чтобы не "хрено-код" получался, а красивая структурированная программа? Типа учебник по Visual Studio?

P.S. Сейчас читаю Рихтера и Джона Скита, всё понятно, но там нет вопроса по структуре кода.

"Program.cs":
namespace online_Bot
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
// Массивы данных из интернета. По идее в основном файле нужно объявлять? MyNum - свой класс, уже описанный.
        MyNum[,] OB1 = new MyNum[2, 250000];
        MyNum[,] OB2 = new MyNum[2, 250000];
        Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Пытаюсь объявить массивы в основной части, естественно они не видны для файла Forms1.cs

Answer 1
  1. Статические поля/свойства класса.
  2. Это не include как в c/c++. Это декларация что ты используешь какой то неймспейс внутри другого неймспейса.
  3. Учебник - любой учебник по c# и доки майкрософт, там довольно много примеров и все хорошо расписано https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio

Массивы объяви в отдельном статическом классе примерно так

public static class Globals
{
public static MyNum[,] OB1 = new MyNum[2, 250000];
}

потом обращаться Globals.OB1[0,0]=1;

Но это плохой стиль да и вообще так не делают =) Сделайте нормальный класс, инкапсулирующий работу с этими данными, сделайте интерфейс и по этому интерфейсу вызывайте операции.

READ ALSO
Зачем нужен атрибут [Conditional("DEBUG")]?

Зачем нужен атрибут [Conditional("DEBUG")]?

Есть такой код но я не могу понять зачем тут нужен я гуглил и так и не понял что делает: [Conditional("DEBUG")] ,ссылка от куда я брал код https://docsmicrosoft

250
C# вывод элементов из публичного класса в ListBox

C# вывод элементов из публичного класса в ListBox

Дорогие друзья! Сразу прошу прощения за мою неопытностьИмею две формы, в которых есть ListBox

80
LINQ groupby отсортировать в группе

LINQ groupby отсортировать в группе

Нужно сгруппировать все паллеты по сроку годности, отсортировать по возрастанию срока годности, в каждой группе отсортировать паллеты по весу

147
Что отвечает за анимацию Item в Terraria?

Что отвечает за анимацию Item в Terraria?

создал новый предмет и в SetDefaults закинул строчку:

132