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


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

A C#-programok egy vagy több fájlból állnak. Minden fájl nulla vagy több névteret tartalmaz. A névterek olyan típusokat tartalmaznak, mint az osztályok, a szerkezetek, a felületek, az enumerálások és a meghatalmazottak, vagy más névterek. Az alábbi példa egy C#-program csontváza, amely az összes ilyen elemet tartalmazza.

using System;

Console.WriteLine("Hello world!");

namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface
    {
    }

    delegate int YourDelegate();

    enum YourEnum
    {
    }

    namespace YourNestedNamespace
    {
        struct YourStruct
        {
        }
    }
}

Az előző példa legfelső szintű utasításokat használ, a program belépési pontjára. Csak egy fájl rendelkezhet legfelső szintű utasításokkal. A program belépési pontja a fájlban lévő programszöveg első szöveges sora. Ebben az esetben ez a Console.WriteLine("Hello world!");. A program belépési pontjaként létrehozhat egy Main nevű statikus metódust is, ahogyan az a következő példában is látható:

// A skeleton of a C# program
using System;
namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface
    {
    }

    delegate int YourDelegate();

    enum YourEnum
    {
    }

    namespace YourNestedNamespace
    {
        struct YourStruct
        {
        }
    }

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

Ebben az esetben a program a metódus nyitó zárójelében Main kezdődik, amely Console.WriteLine("Hello world!");

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

A C# egy lefordított nyelv. A legtöbb C#-programban a dotnet build parancs használatával lefordíthat egy forrásfájlcsoportot bináris csomagba. Ezután a dotnet run parancs használatával futtathatja a programot. (Egyszerűsítheti ezt a folyamatot, mert dotnet run szükség esetén a program futtatása előtt lefordítja a programot.) Ezek az eszközök a konfigurációs beállítások és a parancssori kapcsolók gazdag nyelvét támogatják. A dotnet .NET SDK-ban található parancssori felület (CLI) számos eszközt biztosít a C#-fájlok létrehozásához és módosításához.

A C# 14-től és a .NET 10-től kezdve fájlalapú alkalmazásokat hozhat létre, amelyek megkönnyítik a C#-programok létrehozását és futtatását. A parancs használatával dotnet run egyetlen *.cs fájlban található programot futtathat. Ha például a következő kódrészlet egy nevesített hello-world.csfájlban van tárolva, a következő beírással dotnet run hello-world.csfuttathatja:

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

A program első sora a #! szekvenciát tartalmazza, amely a Unix rendszerhéjak számára készült. A parancssori felület dotnet helye különböző disztribúcióktól függően változhat. Bármely Unix-rendszeren, ha a végrehajtási (+x) engedélyt egy C#-fájlon állítja be, a parancssorból futtathatja a C# fájlt:

./hello-world.cs

Ezeknek a programoknak a forrásának egyetlen fájlnak kell lennie, de ellenkező esetben az összes C# szintaxis érvényes. Fájlalapú alkalmazásokat használhat kis parancssori segédprogramokhoz, prototípusokhoz vagy más kísérletekhez. a fájlalapú alkalmazások lehetővé teszik a buildelési rendszert konfiguráló előfeldolgozási irányelveket .

Kifejezések és állítások

A C#-programok kifejezések és utasítások használatával készülnek. A kifejezések értéket hoznak létre, az utasítások pedig végrehajtanak egy műveletet:

A kifejezés értékek, változók, operátorok és metódushívások kombinációja, amelyek egyetlen értékre értékelnek. A kifejezések eredményt adnak, és bárhol használhatók, ahol egy érték várható. A következő példák a kifejezések:

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

Az utasítás egy teljes utasítás, amely végrehajt egy műveletet. Az utasítások nem adnak vissza értékeket; ehelyett a programfolyamatot vezérlik, változókat deklarálnak vagy műveleteket hajtanak végre. A következő példák állítások:

  • int x = 42; (nyilatkozat)
  • Console.WriteLine("Hello"); (kifejezési utasítás – metódushívási kifejezés körbefuttatása)
  • if (condition) { /* code */ } (feltételes utasítás)
  • return result; (visszatérési utasítás)

A fő különbség: a kifejezések értékeket értékelnek ki, míg az utasítások műveleteket hajtanak végre. Egyes szerkezetek, például a metódushívások, mindkettő lehet. Például, amikor a Math.Max(a, b)-et használják int result = Math.Max(a, b);-ben, akkor kifejezésként működik, de amikor önmagában Math.Max(a, b);-ként van írva, kifejezési utasítássá válik.

Az utasításokról részletes információt az Utasítások című témakörben talál. A kifejezés-alapú tagokról és az egyéb kifejezésbeli lehetőségekről a Kifejezés-alapú tagok című témakörben olvashat.

Ezeket a programelemeket az alapismeretek útmutatójának típusaiban ismerheti meg:

C# nyelvi specifikáció

További információ: Alapfogalmak a C# nyelvi specifikációban. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.