Dziś napiszemy naszą pierwszą aplikację w C# .NET. Poznamy nieco składnię języka C# oraz padną po raz pierwszy takie terminy jak klasa oraz metoda, którym przyjrzę się nieco dokładniej w kolejnych wpisach.
Nie wchodzę w szczegóły dotyczące przygotowania środowiska ze względu na fakt, że IDE w tym jak i w każdym innym przypadku dotyczącym nauki programowania jak i samego programowania jest kwestią drugorządną – pozostawiam wybór każdemu z osobna, wedle preferencji. Ja osobiście będę korzystał z Visual Studio 2015 oraz Visual Studio Code (ze względu na fakt, że moim deafault-owym środowiskiem pracy jest macOS).
Aby tradycji stało się zadość jako pierwszy program stworzymy aplikację konsolową o wdzięcznej i każdemu znanej nazwie Hello World.
Zatem, po przejściu kreatora w Visual Studio 2015, tworzącego nasz pierwszy projekt C#, Console Application w edytorze kodu powinien nam pojawić się poniższy widok:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloWorld { class Program { static void Main(string[] args) { } } } |
Pierwsze linijki kodu rozpoczynające się od słowa using to instrukcje, które są wykorzystywane w naszym programie. Kolejną linijką kodu jest namespace, która określa nazwę naszego programu.
Poniżej widzimy klasę o nazwie Program wraz z deklaracją metody Main, która jak widzimy po nawiasach klamrowych jest jeszcze pusta.
1 2 3 4 5 6 |
class Program { static void Main(string[] args) { } } |
Aby nasz program zadziała, musimy określić w naszej metodzie instrukcję wywołującą metodę oraz wypisującą tekst na ekranie konsoli.
1 2 3 4 |
static void Main(string[] args) { Console.WriteLine("Hello world!"); //wypisanie na ekranie konsoli tekstu Hello world! } |
To nie wszystko. Powyższy kod sprawi, że po uruchomieniu programu zostanie uruchomione okno konsoli a w nim wyświetlony tekst ‘Hello world!’. Dodajmy zatem jeszcze instrukcję, która sprawi, że wciśnięcie (np. spacji) zamknie uruchomione okno konsoli.
1 2 3 4 5 |
static void Main(string[] args) { Console.WriteLine("Hello world!"); Console.ReadKey(); //wymuszenie wciśnięcia klawisza w celu zamknięcia okna CMD } |
Voila! Nasz pierwszy program gotowy do uruchomienia. W efekcie końcowym wygląda tak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello world!"); Console.ReadKey(); } } } |
Program działa, zatem omówmy kilka podstawowych szczegółów.
Jak zapewne dało się zauważyć w kodzie wykorzystywane są komentarze, które w powyższym przypadku są komentarzami liniowymi rozpoczynającymi się znakami //.
W języku C# (m.in.) dostępne są również komentarze blokowe (rzadziej używane), które zawieramy pomiędzy znakami /* */ i wyglądają np. tak /* tekst komentarza */.
Kolejną kwestią na którą warto zwrócić uwagę i na temat której warto posiadać wiedzę (szczególnie gdy w przyszłości przyjdzie nam czytać cudzy kod) jest zapis instrukcji na początku programu.
Sposób zapisu, przedstawiony w naszym pierwszym programie jest najczęściej spotykany, jednak zdarza się, że programiści wykorzystywane instrukcję deklarują nieco później aniżeli na początki swojego kodu, co w efekcie końcowym dla naszego przykładu może wyglądać tak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloWorld { class Program { static void Main(string[] args) { System.Console.WriteLine("Hello world!"); System.Console.ReadKey(); } } } |
Jak widzimy na początku programu zniknęła nam instrukcja System, która pojawiła się w przestrzeni nazw metody WriteLine oraz ReadKey.
Całość zmiany widoczna jest w poniższym kodzie źródłowym.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; //usunięto tę linie kodu using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloWorld { class Program { static void Main(string[] args) { System.Console.WriteLine("Hello world!"); //dodano instrukcję System System.Console.ReadKey(); //dodano instrukcję System } } } |
Oba sposoby są prawidłowe, jednak tak jak wspomniałem wcześniej, programiści w celu skrócenia zapisu stosują określenie instrukcji na początku swojego kodu.
OK. W tym wpisie napisaliśmy swój pierwszy program i omówiliśmy kilka podstawowych informacji nt. C#. W kolejnych wpisach poruszymy m.in. temat typów wartościowych oraz referencyjnych, a także temat deklaracji zmiennych.
Kod programu HelloWorld dostępny jest na moim GitHub.