Põhimõtted

1. Andmetüübid (Data Types)

C# jaotab andmetüübid kahte peamisse kategooriasse: väärtustüübid ja viitetüübid.

  • Väärtustüübid (Value types): Need salvestatakse mälus otse (pinus ehk stack). Kui loote väärtustüübiga muutuja, eraldatakse mälu kohe.
    • Täisarvud: int (32-bitine), long (64-bitine), short (16-bitine) ja byte (8-bitine).
    • Ujukomaarvud: float ja double tavaliste arvutuste jaoks ning decimal suure täpsusega (nt finantsandmed) arvutuste jaoks.
    • Tõeväärtused: bool, mille väärtus on kas true või false.
    • Märgid: char, mis esindab ühte Unicode’i märki.
    • Struktuurid ja loetelud: struct (kasutaja deklareeritud väärtustüüp) ja enum (nimetatud konstandid).
  • Viitetüübid (Reference types): Need salvestatakse kuhjas (heap) ja muutuja ise hoiab vaid viidet (mäluaadressi) andmete asukohale.
    • Sõned (string): Esindab muutumatut Unicode’i märkide jada.
    • Klassid (class): Kasutaja loodud andmestruktuurid, mis koondavad andmeid ja käitumist.
    • Massiivid (array): Viitetüüp, mis viitab mälualale, kus hoitakse ühte või mitut sama tüüpi elementi.

2. Muutujad (Variables)

Muutujad on identifikaatorid, mis on seotud väärtustega.

  • Deklareerimine ja väärtustamine: Muutuja loomiseks tuleb määrata selle tüüp ja nimi. Väärtuse omistamine võib toimuda deklareerimise ajal või hiljem. Näiteks: string aFriend = "Bill";.
  • Tüübi tuletamine (var): Alates versioonist C# 3.0 saab kasutada märksõna var, mis laseb kompileerijal muutuja tüübi ise tuletada sellele antud väärtuse põhjal.
  • Konstandid (const ja readonly): const märksõnaga deklareeritud väärtused on muutumatud ja need tuleb määrata kohe. readonly välju saab algväärtustada ka konstruktoris.
  • Nimepanek: Muutujate nimed on tõstutundlikud (nt FOO on erinev kui foo) ning need ei tohi alata numbriga. Tavaliselt kasutatakse muutujate puhul camelCase kirjastiili.

3. Sisend ja väljund (Input/Output)

C# kasutab konsoolirakendustes andmete lugemiseks ja kirjutamiseks klassi Console.

  • Väljund (Output):
    • Console.WriteLine() – Prindib tekstirea ekraanile ja liigub järgmisele reale.
    • Sõne interpoleerimine: Kasutades sümbolit $ jutumärkide ees (nt $"{variable}"), saab muutujaid mugavalt teksti sisse paigutada.
  • Sisend (Input):
    • Console.ReadLine() – Loeb kasutaja poolt konsooli sisestatud teksti.
    • Kuna ReadLine tagastab alati sõne, tuleb numbriliste väärtuste saamiseks kasutada teisendamist, näiteks Convert.ToInt32().

4. Programmi struktuur

Igal C# programmil peab olema sisenemispunkt (entry point), milleks on tavaliselt meetod nimega Main. See asub klassi sees ja on märgitud kui static. Uuemates versioonides on võimalik kasutada ka top-level statements lähenemist, mis eemaldab vajaduse klassi ja Main meetodi otsese kirjutamise järele, tehes koodi vähem mahukaks.

Koodi näited:

public static void Pinginaabrid()
{
Console.WriteLine("Sisesta esimene nimi ");
string nimi1 = Console.ReadLine();
Console.WriteLine("Sisesta teine nimi ");
        string nimi2 = Console.ReadLine();

        if (nimi1 != "" && nimi2 != "")
        {
            Console.WriteLine($"{nimi1} ja {nimi2} on täna pinginaabrid.");
        }
        else
        {
            Console.WriteLine("Palun sisesta kaks nime");
        }
public static void RemondiKalk()
        {
            Console.Write("Sisesta toa esimese seina pikkus (m): ");
            double a = double.Parse(Console.ReadLine());

            Console.Write("Sisesta toa teise seina pikkus (m): ");
            double b = double.Parse(Console.ReadLine());

            double pindala = a * b;
            Console.WriteLine("Põranda pindala on " + pindala + " m2.");

            Console.Write("Kas soovid remonti teha? (jah/ei): ");
            string soov = Console.ReadLine();

            if (soov == "jah")
            {
                Console.Write("Sisesta ruutmeetri hind (€/m2): ");
                double ruutmeetriHind = double.Parse(Console.ReadLine());

                double hind = pindala * ruutmeetriHind;
                Console.WriteLine("Põranda vahetamise hind on " + hind + " euro.");
            }
            else
            {
                Console.WriteLine("Remonti ei arvutata.");
            }