A Visual Studio elindítása után a File menüből válasszuk ki a New Project elemet. Ennek hatására megnyílik az Új projekt varázsló, ahol különféle projektek közül választhatunk.
A Visual Studio úgynevezett Solution fájlokban gondolkodik. Egy Solution több projektet is tartalmazhat. A tényleges projektekből fog összeállni a nagy alkalmazás kódja. A sorozat további részeinek a kódja egy nagy Solution fájlban lesz elérhető, ezért a varázslóval egyelőre csak egy üres Solution fájlt hozok létre, ami a Templates/Other Project Types/Visual Studio Solutions szekcióban található.
A Solution fájl megnyitása után hozzá kell adni ténylegesen egy projektet. Ezt úgy tudjuk megtenni, hogy a CTRL+W,S gombokkal (CTRL+W, majd a CTRL gombot nyomva tartva S) megnyitjuk a Solution Explorert, vagy a View menün keresztül.
A Solutiont kijelölve jobb gombbal kattintunk a nevén, majd a megjelenő menüben az Add menü New Project… menüpontjára kattintunk.
Az Új projekt hozzáadása ablakban a Visual C# szekció Console Application menüpontját válasszuk ki. A projektnek én a pelda01_hello_world nevet adtam.
A Console Application egy parancssoros alkalmazás, grafikus felület nélkül. Grafikus alkalmazásokat a sorozat későbbi részeiben fogunk készíteni, a nyelvi elemek megtanulásához bőven elég parancssoros alkalmazásokat készíteni.
A projekt létrejötte után kezdhetnénk is a program írását, azonban egy esztétikai beállítást még végezzünk el. A Tools menüt lenyitva válasszuk ki az utolsó, Options menüpontot. A megjelenő ablakban pedig keressük ki a Text Editior/All Languages beállítás panelt, majd a Line Numbers jelölőnégyzet mellé tegyünk egy pipát. Ez bekapcsolja a szerkesztőben a sorok számozását.
A beállítás után nincs más dolgunk, mint megírni az első programunkat. Az alapértelmezetten generált forráskódba egy extra sort kell beírnunk, amit elég csak részben begépelnünk, mivel a Visual Studio rendelkezik egy nagyon fejlett kódkiegészítési funkcióval, amelyet IntelliSense-nek neveznek.
Ez a funkció minden támogatott nyelv esetén elérhető, de leginkább C# nyelvhez lett fejlesztve a funkció, mivel belsőleg nagyon támaszkodik .NET komponensekre.
using System;
namespace PeldaHelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Helló C# Világ");
Console.ReadKey();
}
}
}
A program kimenete:
Helló C# Világ
A kód egy using
utasítással kezdődik. Ez a System
névteret veszi használatba. A .NET keretrendszer beépített komponensei a System névtérben és annak alárendelt névtereiben találhatóak meg. Az, hogy melyik névteret tudjuk elérni a programunkból, attól függ, hogy milyen szerelvényeket (Assembly) rendeltünk a programhoz. A szerelvény egy DLL fájl, ami névtereket és osztályokat tartalmaz. A jelenlegi alkalmazás elkészítéséhez nem kell plusz szerelvényeket hozzárendelnünk a programhoz.
Minden programnak definiálnia kell egy saját névteret, ezért kezdődik a program egy namespace
utasítással. Azonosítók elnevezése a C szerű nyelvekhez hasonlóan nem kezdődhet számmal, de a C és C++ megkötéseivel szemben azonban mindenféle karaktert tartalmazhatnak, még ékezetes betűket is, mivel a forráskódok UTF-8 kódolással tárolódnak.
A névtér lényegében arra jó, hogy elkülönítse az osztályok neveit és hatóköreit. Leginkább egy mappaként fogható fel. A későbbiekben szerepüket majd részletesen tárgyaljuk.
Az egyetlen Program nevű osztályunk egy Main függvényt tartalmaz. Több osztályunk is lehet több Main függvénnyel, de az lesz a valódi fő függvény, amelyik statikus elérésű és Main nevű. A függvény a futtatási paramétereket egy szöveg típusú tömbön keresztül kapja meg. A C és C++ nyelvekkel ellentétben C# esetén a tömb is típus, ezért függvény eredményeként és argumentumaként is lehet tömböt használni.
A Console
osztály a konzolt reprezentálja, amelybe adatokat tudunk bekérni és azokat kiírni. A Console
osztály WriteLine
metódusa egy sort ír a képernyőre, amely jelen esetben a "Helló C# Világ" üzenet. Kiíráskor itt is használhatunk speciális és ékezetes karaktereket.
C# és .NET esetén az osztályok és a függvények elnevezései az úgynevezett púpos teve írásmódot követik, ami azt jelenti, hogy ha egy osztály vagy függvény neve több szóból áll, akkor a szavak között nem kötőjellel vagy aláhúzással választjuk el a rész szavakat, hanem az egyes szavakat nagy kezdő betűvel, szóközök nélkül írjuk le. Ezt az elnevezési sémát érdemes betartani, ha kódot publikálunk.
Továbbá annak ellenére, hogy lehetőségünk van akár kínai karakterekkel teleszórni a programunkat, nem ajánlott sem ékezetes, sem speciális karaktereket használó elnevezéseket alkalmazni. Bevált gyakorlat, hogy a megjegyzéseket és a függvények elnevezéseit angol nyelven írjuk, főleg, ha a kódunkat nagy közönség elé akarjuk tárni.
C# 10 vagy újabb nyelvi változatok esetén az első C# programunk egyszerűb felépítésű lesz:
Console.WriteLine("Helló C# Világ");
A C# 10 megjelenésével radikálian egyszerűsítettek bizonyos dolgokat, hogy kezdőbarátabb legyen a nyelv. Ez azonban nem jelenti azt, hogy a korábbi szintaxis elavult lenne, vagy nem működne. A C# 10 ilyen terű újításai csupán szintaxis "fűszerek", mivel a háttérben a fordító a korábban bemutatott kódhoz nagymértékben hasonlót generál ki fordítás előtt.