Ubuntun monoban miért nem működik ez C#ban?
Na én többnyire úgy szoktam csinálni a programom, hogy:
static void Main(string[] args)
{
new Program();
}
Szóval a main stringben van egy new Program.
A főprogram részben pedig egy:
Program{
Console.WriteLine("Hello");
}
Viszont ezt a mono nem hagyja, miért nem? Újabb .net kell a linuxnak, vagy ilyesmi? Elég kezdő linuxos vagyok, csak a gépem mellé beszereztem egy Celeron-os laptopot, és nem akarok windows 10-zel szenvedni rajt, úgyhogy kapott egy xubuntut. Minden féle programozást megszeretnék azon is oldani!
"Viszont ezt a mono nem hagyja, miért nem?"
Mit jelent az, hogy nem hagyja? Kapálózik és orrbavág ha le mered fordítani?
Inkább azt mondanám, hogy először tanuld meg a C# nyelvtanát. De ha te mindenképp így akarod csinálni...
public class Program {
.. public static void Main(string[] args) {
.. .. new Program();
.. }
.. public Program() {
.. .. //ez így bad practice, a konstruktor nem erre való
.. .. Console.WriteLine("Hali!");
.. }
}
Ha már mindenképp így akarod csinálni, akkor legalább ennyire vedd a fáradságot:
public class Program {
.. public static void Main(string[] args) {
.. .. Program p = new Program();
.. .. p.Run();
.. }
.. public void Run() {
.. .. Console.WriteLine("Hali!");
.. }
}
De amúgy ennek se nagyon van értelme.
Látom, hogy amíg fogalmazgattam, 09:59 elmondta a lényeget, de ha már piszmogtam vele, beküldöm:
𝘌𝘡 ugyanúgy nem működik Debianban sem, és megkockáztatom, hogy Windowsban is lehetnek vele problémák. Ha már nem tudod elmesélni a gondod-bajod, legalább a teljes programoddal kedveskedhettél volna. Ha a megjegyzéseidnek hinni lehet, egyelőre lila ködben lebeg előtted a C#-programozás teljes mibenléte.
Amit te „main string”-nek nevezel, az korántsem string, hanem az általad feltüntetésre méltatlannak ítélt Program osztályod fő metódusa – arról nem tehet szegény, hogy a zárójelei közé beírtál egy ehelyt tökéletesen fölösleges string argumentumot. A benne lévő „new Program” – amit te „főprogram rész”-nek titulálsz – pedig ugyanennek az osztálynak a konstruktora, egyébként szintén vétlen abban, hogy ettől a szerepétől független feladatot végeztetsz vele. Mellesleg ez a program még vígan elvolna konstruktor nélkül is, de ha már van neki, a neve is bátran lehetne Macisajt vagy Csipkefa aszerint, hogy éppen milyen nevet adtál az osztálynak, tehát a „main stringben van egy new Program” többszörösen nem jelent semmit. Anélkül, hogy erőteljesebben beleártanám magamat a programodba, annak valami efféle formában mindenesetre működnie kéne:
using System;
public class Program{
Program()
{
Console.WriteLine("Hello");
}
static void Main()
{
new Program();
}
}
A teljes programom így nézett ki. A lényeg, hogy programozást tanulok, több nyelvet is, főként C#-ot. Van asztali gépem, windows 10-zel, viszont egy ismerős által be tudok szerezni elég jó áron egy 5 éves celeron-os laptopot. Mivel nem szeretném magam kínozni ezen windows 10-zel, így erre egy xubuntut tennék. Linuxoztam már, csak nem sokat, ugyan is a játékok miatt nem tudtam kiváltani a teljes rendszert.
Visual Studio 2019-et használok, abban alapból, ha egy framework-os console app-ot létre hozok, akkor abba a "static void Main(string[] args)"-t alapból bele teszi. Az egyszerűbb programokat pedig úgy szoktuk írni, hogy ebbe megy egy "new Program();", a class-ba pedig egy Program() {}, és abba ami a főprogram része, nem metódus.
Na de a gond az, hogy linux alatt a mono ezt nem tudja nekem, de szeretném megoldani, ugyan is így sokkal egyszerűbb:)
Írtam is, hogy kezdő linuxos vagyok, és nem szuper programozó, csak tanuló, ezért elnézést kérnék, de nem lehordást. Értelmesebb válaszokat pedig köszönöm!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!