Błąd przy użyciu funkcji Console.WriteLine();

0

Utworzyłem nową klasę w projekcie aplikacji konsolowej i przy użyciu funkcji

CONSOLE.WRITELINE();

Dostaję komunikat: Nazwa Console.WriteLine nie istnieje w bieżącym kontekście. Jak sobie z tym poradzić?

0

Przestac pisac duzymi literami?

Console.WriteLine("Hi");

Calosc powinna wygladac tak:

using System;

public class Example
{
   public static void Main()
   {
        Console.WriteLine("Hi");
   }
}
0

Zapomniałem o metodzie Main.

Jak sobie poradzić z kilkoma metodami Main w jednym projekcie (jedna na klasę)? Dostaję komunikat zdefiniowano więcej niż jeden punkt wejścia.
W Javie nie miałem tego problemu.
Korzystam z Visual Studio 2017

0

A czemu tak? Powinien być jeden Main.

Co w ogóle miałoby się wydarzyć po wystartowaniu projektu, który ma kilka metod Main?

0
some_ONE napisał(a):

A czemu tak? Powinien być jeden Main.

Co w ogóle miałoby się wydarzyć po wystartowaniu projektu, który ma kilka metod Main?

Czasami chcę coś przetestować w danej klasie, w Javie wrzucałem po prostu metodę Main i sobie działałem na konkretnej klasie. Dopiero przy budowaniu programu podawałem gdzie jest klasa Main i to załatwiało sprawę. W C# nie raz chciałem coś szybko przetestować gdzie przydało by mi się wyświetlenie jakichś wartość funkcją WriteLine.

1

Do takich szybkich testów użyj okna C# Interactive.

0
rubesom napisał(a):
some_ONE napisał(a):

A czemu tak? Powinien być jeden Main.

Co w ogóle miałoby się wydarzyć po wystartowaniu projektu, który ma kilka metod Main?

Czasami chcę coś przetestować w danej klasie, w Javie wrzucałem po prostu metodę Main i sobie działałem na konkretnej klasie. Dopiero przy budowaniu programu podawałem gdzie jest klasa Main i to załatwiało sprawę. W C# nie raz chciałem coś szybko przetestować gdzie przydało by mi się wyświetlenie jakichś wartość funkcją WriteLine.

Co to znaczy, że działasz na jednej klasie? Chyba kompilujesz tylko jedną klasę, a nie cały projekt.

0
Krzywy Programista napisał(a):
rubesom napisał(a):
some_ONE napisał(a):

A czemu tak? Powinien być jeden Main.

Co w ogóle miałoby się wydarzyć po wystartowaniu projektu, który ma kilka metod Main?

Czasami chcę coś przetestować w danej klasie, w Javie wrzucałem po prostu metodę Main i sobie działałem na konkretnej klasie. Dopiero przy budowaniu programu podawałem gdzie jest klasa Main i to załatwiało sprawę. W C# nie raz chciałem coś szybko przetestować gdzie przydało by mi się wyświetlenie jakichś wartość funkcją WriteLine.

Co to znaczy, że działasz na jednej klasie? Chyba kompilujesz tylko jedną klasę, a nie cały projekt.

Mam jakiś pomysł który chcę szybko przetestować, który jest związany z tym nad czym pracuję. W Javie robiłem nową klasę z metodą Main i wykorzystywałem w niej elementy z obecnego projektu. W C# widzę, że nie mogę uruchomić (ctrl+F5) projektu jak mam kilka klas z funkcją Main w danym projekcie. Da się z tym jakoś żyć tak jak w Javie?

0

Main - oznacza główny. Oczywiste jest, że jeden projekt może mieć jedną główną metodę, inaczej ta nazwa byłaby bez sensu.

My po prostu nie żyjemy tak jak w Javie. Mamy ogień, koło, debugger, C# interactive i testy jednostkowe.
A jak już bardzo się chce uruchomić projekt chwilowo w ramach aplikacji konsolowej, to się po prostu robi aplikację konsolową, dodaje referencję i uruchamia kod.

1

Wejdź w ustawienia swojej aplikacji i tam możesz zdefiniować co jest punktem wejścia (Startup Object).

screenshot-20180625134248.png

Jak tego nie ustawisz to może być tylko jedna metoda Main i będziesz miał błąd kompilacji.

0
somekind napisał(a):

Do takich szybkich testów użyj okna C# Interactive.

Po co? przecież są kompilatory online.

@rubesom

Wpisz C# online i wybierz sobie taki, który Ci odpowiada.

0
WeiXiao napisał(a):
somekind napisał(a):

Do takich szybkich testów użyj okna C# Interactive.

Po co? przecież są kompilatory online.

Pewnie po to, że jak i tak ma odpalony VS to szybciej będzie coś sprawdzić w okienku Interactive, niż przeklepywać kod do kompilatora online.

0

Nie kumam o co ten cały hejt. Przecież to całkowicie normalne żeby mieć kilka main'ów i przy uruchamianiu specyfikować który odpalić. Chociaż by po to żeby włączyć wersję developerską, taką która strzela pod testowe API albo produkcyjną.

A jak mi ktoś powie że zamiast odrębnych startpointów lepiej przekazać parametr albo inny pomysł, typu zmieniaj flagę przed kompilacją to go wyzwę od klepaczy kodu.

Ps: To prawda, pod niektóre rzeczy lepiej napisać unit testa zamiast robić nowy entry point (i analogowo napierniczać myszką, zamiast odpalić test), no ale bez przesady żeby nie można było mieć kilku main'ów.

0
TomRiddle napisał(a):

Nie kumam o co ten cały hejt. Przecież to całkowicie normalne żeby mieć kilka main'ów i przy uruchamianiu specyfikować który odpalić.

Piszę w C# jakieś 14 lat, ani razu nie miałem takiej potrzeby, i naprawdę pierwsze o czymś takim słyszę.

Chociaż by po to żeby włączyć wersję developerską, taką która strzela pod testowe API albo produkcyjną.

Od tego jest konfiguracja, a nie kod.

A jak mi ktoś powie że zamiast odrębnych startpointów lepiej przekazać parametr albo inny pomysł, typu zmieniaj flagę przed kompilacją to go wyzwę od klepaczy kodu.

Tylko, że taki ktoś może Ciebie od nich wyzwać także. I na dodatek skuteczniej. ;)

1
somekind napisał(a):
TomRiddle napisał(a):

Nie kumam o co ten cały hejt. Przecież to całkowicie normalne żeby mieć kilka main'ów i przy uruchamianiu specyfikować który odpalić.

Piszę w C# jakieś 14 lat, ani razu nie miałem takiej potrzeby, i naprawdę pierwsze o czymś takim słyszę.

Szkoda że już nie możemy sprawdzić jakbyś do tego podchodził gdyby cały ten czas istniała taka możliwość.

Chociaż by po to żeby włączyć wersję developerską, taką która strzela pod testowe API albo produkcyjną.

Od tego jest konfiguracja, a nie kod.

Moim zdaniem do tego celu obie są ok.

A jak mi ktoś powie że zamiast odrębnych startpointów lepiej przekazać parametr albo inny pomysł, typu zmieniaj flagę przed kompilacją to go wyzwę od klepaczy kodu.

Tylko, że taki ktoś może Ciebie od nich wyzwać także. I na dodatek skuteczniej. ;)

Może zabrzmi głupio, ale to wygląda jak całkowicie niemerytoryczna uwaga.

A do tego dodam, ktoś kto pisze w ruby mógłby powiedzieć "od 14 lat pracuję z orm bez adnotacji i działa spoko!" jako argument za konfiguracją relacji w xmlu zamiast w kodzie adnotacjami.

Więc taki argument "w c# się nie da więc to głupi pomysł" jest taki... meh.

0
TomRiddle napisał(a):

Szkoda że już nie możemy sprawdzić jakbyś do tego podchodził gdyby cały ten czas istniała taka możliwość.

Ależ ona istnieje co najmniej od VS 2005. Po prostu jakoś nigdy nie miałem potrzeby.

Moim zdaniem do tego celu obie są ok.

Ja jednak wolę uruchamiać na produkcji kod przetestowany, a nie jakiś inny.

Może zabrzmi głupio, ale to wygląda jak całkowicie niemerytoryczna uwaga.

Ty zacząłeś merytoryczne uwagi pisząc, że kogoś wyzwiesz. :)

Więc taki argument "w c# się nie da więc to głupi pomysł" jest taki... meh.

Ale czy tu padł taki argument? Mnie chodziło o to, że skoro da się bez tego, to nie jest to wcale takie konieczne. A jak wnioskuję z tego, co Ty napisałeś, to używanie tego może prowadzić do niebezpiecznych sytuacji. I po co tak?

0

Mam jakiś pomysł który chcę szybko przetestować, który jest związany z tym nad czym pracuję. W Javie robiłem nową klasę z metodą Main i wykorzystywałem w niej elementy z obecnego projektu. W C# widzę, że nie mogę uruchomić (ctrl+F5) projektu jak mam kilka klas z funkcją Main w danym projekcie. Da się z tym jakoś żyć tak jak w Javie?

polecam program LinqPad http://www.linqpad.net/download.aspx

0

Możesz również edytować projekt i dodać właściwość

<StartupObject>NazwaProjektu.KlasaZawierającaMain</StartupObject>

albo w konsoli dla .net core wpisać polecenie

  dotnet build nazwaProjektu.csproj /p:StartupObject=nazwaProjektu.Klasa
  dotnet run nazwaProjektu.csproj /p:StartupObject=nazwaProjektu.Klasa

Testowane działa 😊

1 użytkowników online, w tym zalogowanych: 0, gości: 1