Konsolapplikationer
I materialet bruges konsolapplikationer til at afprøve kode, og lidt forvirrende er der tre forskellige versioner: enkeltfils-afvikling (.NET 10), med top-level statements (script version) og uden top-level statements (traditionel version).
Information til undervisere
Det er vigtigt at kursisten prøver selv - få dem til at kode!!
Enkeltfils-afvikling (.NET 10)
Fra .NET 10 er det blevet muligt at afvikle en enkelt C#-fil direkte uden at skulle oprette et projekt. Dette er den absolut nemmeste måde at komme i gang på, og er perfekt til hurtige tests, læring og eksperimenter.
Grundlæggende eksempel
Opret en fil kaldet hello.cs med følgende indhold:
Afvikl den direkte:
Det er alt! Ingen projektfil, ingen mappe-struktur - bare en enkelt fil.
Brug af variabler og logik
Du kan skrive helt almindelig C# kode i filen:
string navn = "Anders";
int alder = 25;
Console.WriteLine($"Hej {navn}, du er {alder} år gammel");
if (alder >= 18)
{
Console.WriteLine("Du er myndig");
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine($"Tæller: {i}");
}
Brug af NuGet pakker
Du kan også bruge NuGet pakker direkte i enkeltfiler ved at tilføje en reference øverst i filen med #r "nuget: PakkeNavn":
#r "nuget: Spectre.Console, 0.49.1"
using Spectre.Console;
AnsiConsole.Write(
new FigletText("Hello World!")
.Centered()
.Color(Color.Blue));
var table = new Table();
table.AddColumn("Navn");
table.AddColumn("Alder");
table.AddRow("Anders", "25");
table.AddRow("Maria", "30");
AnsiConsole.Write(table);
Første gang du afvikler filen, vil .NET automatisk downloade og cache NuGet pakken.
Fordele og begrænsninger
Fordele:
- Ekstremt hurtigt at komme i gang
- Ingen projektfil eller mappestruktur nødvendig
- Perfekt til prototyping og læring
- Kan bruge NuGet pakker direkte
- Understøtter async/await
Begrænsninger:
- Kun én fil pr. program
- Ikke velegnet til større applikationer
- Begrænset intellisense i nogle editorer
- Ingen projekt-konfigurationsmuligheder
Hvornår skal jeg bruge enkeltfils-afvikling?
- Når du skal teste en lille kodestump hurtigt
- Når du lærer nye koncepter i C#
- Til små scripts og automatiseringsopgaver
- Når du demonstrerer kode for andre
Til mere komplekse applikationer med flere filer og avancerede konfigurationer, bør du bruge et fuldt projekt.
Konsolapplikation uden Top-Level Statements (projekt version)
Traditionelt har en konsolapplikation i C# en Main metode i en klasse. Her er et eksempel på en simpel konsolapplikation uden top-level statements:
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Konsolapplikation med Top-Level Statements (script version)
C# 9 introducerede top-level statements, som forenkler koden ved at fjerne behovet for en Main metode og en indkapslende klasse. Her er et eksempel på en konsolapplikation med top-level statements:
Denne version er god til helt små projekter hvor namespace med videre ikke er så vigtigt.
Avanceret: Asynkron Konsolapplikation - ikke vigtigt for begyndere
I mere avanceret kode skabe asynkrone applikationer og her bruges en anden skabelon hvor Main metoden skal have returtypen Task. Her er et eksempel på en asynkron konsolapplikation uden top-level statements:
using System;
using System.Threading.Tasks;
namespace ConsoleApp
{
class Program
{
static async Task Main(string[] args)
{
await Console.Out.WriteLineAsync("Hello World!");
}
}
}
Og her er et eksempel på en asynkron konsolapplikation med top-level statements:
Visual Studio Code
I Visual Studio Code kan du vælge mellem de to versioner ved at skabe et projekt i terminalen.
Følgende skaber den “simple” version:
og følgende skaber den “traditionelle” version:
Visual Studio
I Visual Studio kan du vælge mellem de to versioner ved at skabe et projekt af typen Console application, angive navn med videre, og så angive hvilken version du ønsker i checkboksen “Do not use Top-Level Statements”:
- Hvis der ikke sættes kryds skabes en traditionel konsol applikation uden top-level statements.
- Hvis der sættes kryds skabes en script baseres konsol applikation med top-level statements.
Info
Så snart du er lidt øvet så brug konsol applikationer uden top-level statements (den traditionelle form med en klasse Program og en statisk Main-metode).
Spørgsmål til AI
For at få mest muligt ud af AI-værktøjer som ChatGPT, er det vigtigt at stille klare og præcise spørgsmål (og skabe det rigtige kontekst - se her). Her er nogle spørgsmål til denne side:
Grundlæggende spørgsmål til AI
- Hvad er en konsolapplikation i C#?
- Hvad er forskellen mellem top-level statements og traditionel Main metode?
- Hvornår skal jeg bruge top-level statements vs traditionel struktur?
- Hvordan læser jeg input fra brugeren i en konsolapplikation?
- Hvordan skriver jeg output til konsollen?
- Hvad betyder “static void Main(string[] args)”?
