ifullut
@ifullut
Учу программирование понарошку...

Что делать если запускается другой файл, а не тот который нужен в C# .NET?

Всем привет. Новичок в c#. У меня стоит дистрибутив Manjaro KDE. Скачал dotnet, vscode.
И начинаю создавать приложение. В обычном проводнике создаю папку TestCsharp. Ее запускаю в терминале, пишу: dotnet new console. Создаёт две папки bin, obj. И файлы TestCsharp.proj, Program.cs.
Прикол в том, что если я просто создам новый файл к примеру Testik.cs. Пишу в нем:
using System;

namespace TestCsharp;
{
    class test
    {
        static void Test() 
        {
             Console.WriteLine("Hello, im new file — test");
         }
      }
}


В файле Program.cs базовый код, с функцией Main() в которой выводится Hello World!

И вот пишу в терминале: dotnet run Testik.cs.
Он думает и выдает мне из Program.cs, а не Testik.cs. Что делать?????

Предполагаю, что класс Program главный и поэтому он выполняет его, если это правда, то как "импортировать" из Testik.cs функцию Test??
  • Вопрос задан
  • 382 просмотра
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
В .NET Единицей компиляции является "Сборка", а она возникает из проекта - тот самый .csproj
По тому и нельзя через dotnet run запустить конкретный файл (dotnet run запускает проект) - это раз.
Два - точкой входа у консольного приложения является статичный метод Main (или top-level-statement) где-нибудь в проекте. Точка входа может быть только одна.
Три - чтобы выполнить метод Test класса test, который вы объявили в файле Testik.cs нужно в Main создать экземпляр этого класса и вызвать этот метод. Будет это выглядеть как-то так:

TestCsharp.test.Test(); // Пардон, создавать экземпляр не обязательно, тк метод Test объявлен как static, но чтобы его можно было вызвать извне, надо его ещё и public сделать


Рекомендую пока не забегать вперёд с созданием новых классов и методов и учить всё по порядку.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Hanneman
"Импортировать"... Вы пока настолько в начале пути, что для того, чтобы не задавать таких вопросов, стоит прочитать хотя бы первую главу учебника. Не считайте за иронию, это полезный совет.
В программе есть "точка входа" - с нее начинается выполнение. С того самого метода Main.
Насчёт "импортировать" - читаем про экземпляр класса - основу ООП, ярким представителем которого и является C#.

Я это пишу потому, что решение внизу надо осознать, изучив теорию - понять, что собой представляет данная конструкция (без поправок на static).
test ts = new test();
ts.Test();
Ответ написан
Комментировать
BasiC2k
@BasiC2k
.NET developer (open to job offers)
В Program.cs должна быть процедура Main. Это и есть точка входа (старта) приложения. С Main и начинается выполнение программы (по умолчанию)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы