Piszemy pierwszy program w C#. Zamiast „hello worldów” sprawdzimy sobie pętlę do-while, funkcję TryParse i zmienne „out” żeby przychodząc z języków takich jak PHP i JavaScript czy Python w ogóle „poczuć” czy nam ten C# pasuje (hello-worldy pisze się jednakowo we wszystkich językach).
Potrzebne Visual Studio albo kompilator online. Tworzymy pustą aplikację konsolową, następnie piszemy nasz program:
using System;
namespace ConsoleApp10
{
class Program
{
static void Main(string[] args)
{
string ipt;
bool is_number;
do
{
Console.WriteLine("Enter a number: ");
ipt = Console.ReadLine();
is_number = int.TryParse(ipt, out int number);
if (is_number)
{
Console.WriteLine("Your number is: ");
Console.WriteLine(number);
}
} while (is_number == false);
}
}
}
Pierwsza rzecz, która się rzuca w oczy – namespace. W PHP używane, choć opcjonalne. Na razie okej.
Druga rzecz – main jest klasą. Jak w Javie. Widziałem kiedyś nawet tutorial do C#, który w jednym odcinku, chyba dla żartu, podmienił swoje tło z hello-worldem w C# na takiego w Javie.
Trzecia rzecz:
static void Main(string[] args)
Co to metoda statyczna powinniśmy wiedzieć, void zaś oznacza, że nic nie zwracamy, żadnego -1. Ciekawy jest jednak argument. Tablica stringów args.
Cóż, to są argumenty z terminala. Najlepiej zrozumieć to na prostym przykładzie. Skrypt Pythona, który każdy zrozumie:
import sys
print(sys.argv[0])
if(len(sys.argv) >= 2):
print(sys.argv[1])
Teraz odpalamy nasz skrypt:
python ./argsargs.py
python ./argsargs.py blablabla
I to są właśnie takie argumenty, które można przekazywać. Dalej mamy utworzenie zmiennych o określonych typach (bez przypisania wartości) oraz pętlę do-while:
string ipt;
bool is_number;
do
{
//najpierw wykona, potem sprawdzi warunek
} while (is_number == false);
Pętla do while najpierw wykona sekwencję do, potem sprawdzi warunek. Tak działa, zatem po pierwszym wykonaniu bloku do powinniśmy już poinformować program, czy zmienna typu bool is_number jest prawdziwa, czy fałszywa:
string ipt;
bool is_number;
do
{
Console.WriteLine("Enter a number: ");
ipt = Console.ReadLine();
is_number = int.TryParse(ipt, out int number);
if (is_number)
{
Console.WriteLine("Your number is: ");
Console.WriteLine(number);
}
} while (is_number == false);
Funkcja TryParse próbuje parsować przekazaną jej zmienną ipt ze stringa na typ int. Zwraca prawdę lub fałsz. Zwraca też „out variable” typu int o nazwie number, a zatem zmienna number zostanie utworzona z wartością ipt zmienioną na int, jeżeli operacja się powiedzie.
Możemy jeszcze zabawić się w interpolację stringów:
namespace ConsoleApp10
{
class Program
{
static void Main(string[] args)
{
string ipt;
bool is_number;
do
{
Console.WriteLine("Enter a number: ");
ipt = Console.ReadLine();
is_number = int.TryParse(ipt, out int number);
if (is_number)
{
Console.WriteLine($"Your number is: {number} ");
}
} while (is_number == false);
}
}
}
Tyle tytułem naszego hello-worlda w C#. Teraz powinniśmy mieć jako taki ogląd jak zapatrujemy się na tego rodzaju języki.