Avatar billede lizardine Nybegynder
18. juli 2005 - 20:16 Der er 15 kommentarer og
1 løsning

Funktionskald i C# som i VB

Hej

Jeg har et spørgsmål omkring benyttelse af funktioner/metoder i C#

Normalt i VB vil jeg have følgende funktion:

//Funktionen ligger i et bas modul
Public Function DoStuff(aVar)
    If aVar = "" Then
          aVar = "Variablen er tom"
    End If
End Function

//Rutinen ligger i en form
Private Sub Form_Load
    Dim aVar As String

    MsgBox DoStuff(aVar) //Vil retunere "Variablen er tom"
End Sub

Men hvordan skal dette gøres i C#???
Avatar billede arne_v Ekspert
18. juli 2005 - 20:18 #1
principielt lige sådan

syntaxen er bare lidt anderledes
Avatar billede arne_v Ekspert
18. juli 2005 - 20:19 #2
public string DoStuff(string aVar)
{
  if(aVar=="")
  {
      aVar = "Variablen er tom";
  }
  return aVar;
}
Avatar billede arne_v Ekspert
18. juli 2005 - 20:21 #3
private void Form_Load()
{
  string aVar = "";
  MessageBox.Show(DoStuff(aVar));
}
Avatar billede arne_v Ekspert
18. juli 2005 - 20:21 #4
de skal muligvis slaves lidt om efter konteksten men ...
Avatar billede lizardine Nybegynder
18. juli 2005 - 20:23 #5
Arne_V >> Hvis DoStuff ligger i en anden klasse, så skal jeg vel først kalde klassen. F.eks.

//Min klasse
Class DoStuff
{
  public string DoStuff(string aVar)
  {
      if(aVar=="")
      {
          aVar = "Variablen er tom";
      }
      return 
  }
}

//Min Form
Private void Page_Load
{
    DoStuff cDS = DoStuff

    string aVar = cDS.DoStuff("Et eller andet")
}
Avatar billede arne_v Ekspert
18. juli 2005 - 20:27 #6
ja

private void Page_Load()
{
    DoStuff cDS = new DoStuff();

    string aVar = cDS.DoStuff("Et eller andet");
}
Avatar billede lizardine Nybegynder
18. juli 2005 - 20:29 #7
Er det ikke lidt omstændigt. Lad os forstille os at jeg også skulle benytte DoStuff klassen i andre klasser, vil der så ikke være en nemmere måde at gøre det på?

I VB skal man jo blot deklarere sin funktion som public også er man home-free ;-)
Avatar billede arne_v Ekspert
18. juli 2005 - 20:32 #8
du kan erklære den static
Avatar billede arne_v Ekspert
18. juli 2005 - 20:33 #9
public class DoStuffClass
{
  public static string DoStuffMethod(string aVar)
  {
      if(aVar=="")
      {
          aVar = "Variablen er tom";
      }
      return aVar;
  }
}

private void Page_Load()
{
    string aVar = DoStuffClass.DoStuffMethod("Et eller andet");
}
Avatar billede lizardine Nybegynder
18. juli 2005 - 20:34 #10
Static??? vil det sige at først gang man deklarere sin klasse, kan man frit benytte den på tværs af alle klasser?
Avatar billede arne_v Ekspert
18. juli 2005 - 20:36 #11
static betyder at man kalder metoden op klassen og ikke på et objekt (en instans af klassen)
Avatar billede arne_v Ekspert
18. juli 2005 - 20:36 #12
sjovt eksempel:

using System;

public class Demo
{
    private static int si = 0;
    private int nsi = 0;
    public Demo()
    {
        si++;
        nsi++;
    }
    public void printNsi()
    {
        Console.WriteLine(nsi);
    }
    public static void printSi()
    {
        Console.WriteLine(si);
    }
    public static void Main()
    {
        Demo d1 = new Demo();
        Demo d2 = new Demo();
        d1.printNsi();
        d2.printNsi();
        Demo.printSi();
    }
}
Avatar billede lizardine Nybegynder
18. juli 2005 - 20:41 #13
Okay - Jeg tror nok jeg næsten forstår :-) Hvad så hvis jeg gerne kalde klassen Demo fra en anden klasse, og sende en parameter med?
Avatar billede arne_v Ekspert
18. juli 2005 - 20:43 #14
helt det samme

ikke static metoder kaldes med:
  navnpåobject.navnpåmetode(argumenter);

static metoder kaldes med:
  navnpåklasse.navnpåmetode(argumenter);
Avatar billede lizardine Nybegynder
18. juli 2005 - 20:44 #15
Ahhh sådan. Kanon. Vil du komme med et svar :-)
Avatar billede arne_v Ekspert
18. juli 2005 - 21:03 #16
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester