Megosztás a következőn keresztül:


A C#-programok általános felépítése

Jótanács

Új szoftverfejlesztés? Először az Első lépések oktatóanyagokkal kezdje. A programstruktúra megismerése előtt végigvezetik az első C#-programok írásán.

Tapasztalt egy másik nyelven? Érdemes lehet átfutni a Első lépések szakaszt a C#-specifikus szintaxis miatt, majd térjen vissza ehhez az oldalhoz.

C#-programokat ezekből az alapvető építőelemekből hozhat létre: a névterek rendszerezik a típusok, típusok (osztályok, szerkezetek, felületek, enumerálások és meghatalmazottak) viselkedését és adatait, az utasítások és kifejezések pedig futásidőben végeznek munkát. A belépési pont struktúrája attól függ, hogy melyik alkalmazásstílust választja.

Az alkalmazásstílus kiválasztása

C#-program létrehozásakor két független döntést kell meghoznia a szerkezetéről:

  • Fájlalapú vagy projektalapú?
    • A fájlalapú alkalmazások egyetlen .cs fájlból futnak, projektfájl nélkül.
    • A projektalapú alkalmazások fájlokat .csproj használnak, és több forrásfájlra is kiterjedhetnek.
  • Legfelső szintű utasítások vagy Main metódus?
    • A legfelső szintű utasítások lehetővé teszik a végrehajtható kód írását közvetlenül a fájl tetején.
    • A Main metódus explicit statikus metódusba burkolja a belépési pontot.

A projektalapú alkalmazások és a fájlalapú alkalmazások egyaránt támogatják a belépési pont stílusát.

Fájlalapú alkalmazások és projektalapú alkalmazások

A C# 14-től és a .NET 10-től kezdve a fájlalapú alkalmazások lehetővé teszik, hogy egyetlen *.cs fájlban lévő programot futtasson projektfájl nélkül. Tárolja a következő kódot egy hello-world.cs nevű fájlban, és futtassa a következőkkel: dotnet run hello-world.cs vagy dotnet hello-world.cs.

#!/usr/bin/env dotnet
Console.WriteLine("Hello, World!");

Megjegyzés:

A #! sor lehetővé teszi a Unix-rendszerhéjak számára a fájl közvetlen futtatását. Bármely Unix-rendszeren állítsa be a végrehajtási (+x) engedélyt, és futtassa a fájlt a parancssorból.

A fájlalapú alkalmazások támogatják az összes C# szintaxist, és használhatnak előfeldolgozási irányelveket a buildelési rendszer konfigurálásához. Használjon fájlalapú alkalmazásokat kis parancssori segédprogramokhoz, prototípusokhoz és kísérletekhez. A fájlalapú alkalmazások egyetlen fájlból állnak egy könyvtárban:

my-app/
└── hello-world.cs

A projektalapú alkalmazások fájlokat .csproj és .NET CLI-parancsokat ésdotnet new munkafolyamatokat dotnet builddotnet runhasználnak. Projektalapú alkalmazásokat akkor válasszon, ha a program több fájlra terjed ki, vagy részletes buildkonfigurációra van szüksége. A projektalapú alkalmazások egy vagy több forrásfájl mellett egy projektfájlt is tartalmaznak:

my-app/
├── my-app.csproj
├── Program.cs
├── Models/
│   └── Person.cs
└── Services/
    └── GreetingService.cs

Ha a fájlalapú alkalmazás növekszik, egyszerűen átalakíthatja projektalapú alkalmazássá. Futtassa dotnet project convert egy projektfájl létrehozásához a meglévő forrásfájlból.

Ha tudja, hogy az alkalmazásnak kezdettől fogva több forrásfájlra van szüksége, kezdje egy projektalapú alkalmazással. Elkerülheti a konvertálási lépést, és azonnal külön fájlokba rendezheti a kódot.

Legfelső szintű utasítások vs. metódus Main

Felső szintű utasítások használatával végrehajtható kódot írhat közvetlenül egy fájlba anélkül, hogy egy osztályba és Main metódusba csomagolja. Ez a stílus az alapértelmezett, ha új konzolalkalmazást hoz létre a következővel dotnet new console: . Az alábbi példa egy modern C#-programot mutat be, amely legfelső szintű utasításokat használ:

Console.WriteLine("Hello, World!");

namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface
    {
    }

    delegate int YourDelegate();

    enum YourEnum
    {
    }
}

A projektben csak egy fájl rendelkezhet felső szintű utasításokkal, és a belépési pont a program szövegének első sora a fájlban. A nagyobb programok létrehozásakor további programelemeket is tartalmaz.

Explicit statikus Main metódust is definiálhat a program belépési pontjaként:

// A skeleton of a C# program using an explicit Main method
namespace YourNamespace;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

Mindkét belépésipont-stílus fájlalapú és projektalapú alkalmazásokkal működik. Mindkét stílus ugyanazokat a funkciókat támogatja.

C#-programok létrehozása és futtatása

A C# egy lefordított nyelv. Projektalapú alkalmazások esetén a parancs használatával lefordíthatja a dotnet build forrásfájlokat bináris csomagba. Használatával dotnet run egyetlen lépésben hozhat létre és futtathat. A dotnet .NET SDK-ban található parancssori felület számos eszközt kínál C#-projektek létrehozásához, létrehozásához és kezeléséhez.

Fájlalapú alkalmazások dotnet run hello-world.cs esetén közvetlenül fordítja le és futtatja az egyetlen fájlt – nincs szükség projektfájlra.

Kifejezések és állítások

Ha követte az Első lépések oktatóanyagokat, már írt kifejezéseket és utasításokat. Minden beírt kódsor az egyik vagy a másik (vagy mindkettő) volt. Most definiáljuk ezeket a kifejezéseket.

A kifejezések és utasítások a C#-programok alapvető építőelemei. Egy kifejezés értéket hoz létre. Az utasítás egy műveletet hajt végre, és általában pontosvesszővel végződik.

A következő kifejezések jelennek meg:

  • 42 (literálérték)
  • x + y (aritmetikai művelet)
  • Math.Max(a, b) (metódushívás, amely értéket hoz létre)
  • condition ? trueValue : falseValue (feltételes kifejezés)
  • new Person("John") (objektum létrehozása)

Az utasítás végrehajt egy műveletet. Az utasítások szabályozzák a programfolyamatot, deklarálják a változókat vagy meghívják a műveleteket. A következő állítások:

  • int x; (nyilatkozat)
  • int x = 42; (deklarációs utasítás inicializálással)
  • Console.WriteLine("Hello"); (metódushívási utasítás)
  • if (condition) { /* code */ } (feltételes utasítás)
  • return result; (visszatérési utasítás)

Az utasítások gyakran tartalmaznak kifejezéseket, és a kifejezések más kifejezésekbe is beágyazhatók. A következő deklarációs f utasítás például egy összeadási kifejezés eredményéhez rendel hozzá. Ez az összeadási kifejezés két metódushívási kifejezés eredményét adja hozzá:

var maxResult = Math.Max(a, b) + Math.Max(c, d);

Az utasításokról részletes információt az Utasítások című témakörben talál. A kifejezés által testesített tagokról további információt a Kifejezés által testesített tagok című témakörben talál.