Hop til teksten

IT FJERNUNDERVISNING
- IT kurser når Du har tid!

Introduktion til C#

Som sagt er dette ikke et kursus i C#, men lad os alligevel se på de mest almindelige konstruktioner.

Nedenstående er mest tænkt som et opslagsværk, som du kan vende tilbage til, hvis du skulle blive i tvivl om ét eller andet.

Procedure

En procedure i C# ser sådan her ud:

private void HelloWorld()
{
  Excel.Worksheet wks = 
        (Excel.Worksheet)Globals.ThisWorkbook.ActiveSheet;
  wks.Range["A1"].Value = "Hello World";
}

Inden vi går videre skal vi lige se på ovenstående. Bemærk følgende

  1. Alle linjer slutter med ; (det er vigtigt)
  2. Vi bruger {} til at markere, hvad der hænger sammen.
  3. Vi bruger [] når vi har fat i et indeks (i VBA bruger man () både i forbindelse med indeks og funktionskald, men i C# er de to typer adskilt)
  4. void angiver at der ikke er nogen returværdi fra proceduren
  5. private angiver at den kun kan bruges lokalt. Man kan også skrive public, hvis det skal bruges flere steder.
  6. Man kan lave linjeskift (næsten) som man har lyst - det er ; der markerer at linjen er slut.
  7. (Excel.Worksheet) er det vi kalder en typecast, det markerer at det efterfølgende skal konverteres til typen Excel.Worksheet).

 Funktion

Og en funktion:

private string ToGangeTekst(string indTekst)
{
  return indTekst + " " + indTekst;
}

 Og et eksempel på, hvordan man kan kalde sådan en funktion.

wks.Range["A1"].Value = ToGangeTekst("Hello World");

 Bemærk følgende:

  1. En funktion er magen til en procedure - bortset fra at vi skriver den datatype, der skal returneres i stedet for void og med return angiver, hvad der skal sendes retur
  2. Tekster sættes sammen med + (i modsætning til &, som du måske kender fra VBA).
  3. Man skriver altid datatype før variabel.

 Variable

Som nævnt ovenfor skriver man altid datatype før variabelnavn, så deklaration af variable ser sådan her ud:

string enTekst = "Hello World";
int etHeltal;
bool SandFalsk = true;
Excel.Worksheet wks =
(Excel.Worksheet)Globals.ThisWorkbook.ActiveSheet;

 Bemærk:

  1. Man kan deklarere en variabel og give den indhold med det samme (det er dejligt)
  2. Man behøver ikke "Set" når man deklarerer et objekt (som man skal i VBA)

Betingelser

int etHeltal = 4;
if (etHeltal == 3)
{
  wks.Range["A1"].Value = "JA - tallet er 3";
}
else
{
  wks.Range["A1"].Value = "Nej - tallet er ikke 3";
}

Bemærk:

  1. Der skal være paranteser omkring betingelsen
  2. Vi bruger == når vi skal sammenligne og != når vi gerne vil teste for om ting er forskellige (! betyder NOT i C#)
  3. Igen bruger vi {} til at markere, hvad der hænger sammen (i ovenstående ekstempel er de faktisk ikke nødvendige, da der kun er én linje i hver blok, men det er god stil at sætte dem på alligevel).

Vi har også And og Or i C#, her er det er bare & og |  - og sætter man to efter hinanden bliver de efterfølgende ting kun evalueret, hvis det er nødvendigt - så vi skriver næsten altid && og ||.

Man kan naturligvis også:

switch (etHeltal)
{ 
  case 0:
    wks.Range["A1"].Value = "JA - tallet er 0";
    break;
  case 1:  case 2:  case 3:  case 4:  case 5:
    wks.Range["A1"].Value = "Tallet er mellem 1 og 5";
    break;
  case 6:
    wks.Range["A1"].Value = "Tallet er 6";
    break;
  default:
    wks.Range["A1"].Value = "Jeg kender ikke tallet";
    break;
}

Svarende til Select Case fra VB. 

Løkker

for (int i = 1; i <= 10; i++)
{
   wks.Range["B" + i.ToString()].Value = i;
 }

Bemærk:

  1. Første parameter angiver startværdien (og man skal angive datatypen her)
  2. Næste parameter angiver, hvor der skal sluttes (man kan godt f.eks. have et funktionskald her, hvis man skulle have lyst til det)
  3. Og til slut - hvordan der skal tælles op. i++ er det samme som i = i + 1 (det er smart)

Vi tager lige én mere:

int i = 1;
foreach (Excel.Worksheet loopwks in Globals.ThisWorkbook.Worksheets)
{
  wks.Range["C" + i.ToString()].Value = loopwks.Name;
  i++;
}

 

Simpel dialog

System.Windows.Forms.MessageBox.Show("Hej med dig","Overskift");

 Og skriver man 

using System.Windows.Forms;

I toppen af koden kan man nøjes med at skrive

MessageBox.Show("Hej med dig","Overskift");

Og vil man have svar retur kan man skrive:

DialogResult svar;
svar = MessageBox.Show("Hej med dig. Går det det godt?", "Overskift",
      MessageBoxButtons.YesNo);
if (svar == DialogResult.Yes)
{
  MessageBox.Show("SUPER!");
}
else
{
   MessageBox.Show("ØV");
}

Der er desværre ingen InputBox i C#, så du må klare dig med dialoger/forms, som er det næste vi skal kigge på.

Kommentarer

I C# kan man lave kommenterer på to måder:

// Dette er en kommentar, der kun fylder en enkelt linje
/* Og en der fylder flere linjer
* en linje mere (* i starten er ikke nødvendig - bare god stil)
* Og endnu en
* Og slut */

 

Når du har betalt for kurset får du adgang til øvelser til hver lektion. Og når du har fået godkendt din besvarelse får du desuden adgang til mine løsningsforslag med ekstra tips og trix.