Avatar billede the_party_dog Nybegynder
03. december 2004 - 12:55 Der er 13 kommentarer og
2 løsninger

Class og namespace

Hvordan kan jeg ligge funktioner ud i andre cs filer, uden at jeg skal oprette dem som en class'e, og lave en instans af dem fra min funktion hvor jeg vil kalde de andre funktioner?

Vil bare gerne have delt mine funktioner ud, så der er noget struktur på det hele, men synes ikke det er særligt smart at jeg skal oprette en instans af en class'e, og vil ikke have alle min funktioner i samme cs fil som mit hoved program.
Avatar billede bennytordrup Nybegynder
03. december 2004 - 12:58 #1
Hvis det er funktioner, du vil dele mellem flere klasser uden at skulle instantiere dem, skal du erklære dem static:

namespace Test {

  class TestClass {

    static void GenerelFunktion() {
    }

  }
}

GenerelFunktion kan derefter kaldes alle steder fra uden at oprette en instans af TestClass.
Avatar billede the_party_dog Nybegynder
03. december 2004 - 12:59 #2
selvom jeg laver den i en anden CS fil?
Avatar billede bennytordrup Nybegynder
03. december 2004 - 13:00 #3
Ja.

Det kan være, at du skal bruge hele namespace stien (Test.TestClass.GenerelFunktion)
Avatar billede arne_v Ekspert
03. december 2004 - 13:04 #4
Al kode i C# ligger i classes.

I .NET 1.0 og 1.1 skal al kode for en class ligge i samme fil (ændres vist i 2.0).

Ikke static metoder kaldes på instanser af klassen.

Static metoder kaldes på selve klassen.
Avatar billede the_party_dog Nybegynder
03. december 2004 - 13:05 #5
fisk arne... Den må du altså lige forklare igen, så jeg kan forstå det... :)
Avatar billede bennytordrup Nybegynder
03. december 2004 - 13:07 #6
arne >>

I 2.0 inføres begrebet "partial class" for at kunne skille designer genereret kode ud fra programmørens kode. Designer genereret kode ligger herefter i en cs fil for sig selv (hvad jeg i øvrigt synes er en fantastisk ide - det kunne have været mig, der havde fået den :-) )
Avatar billede arne_v Ekspert
03. december 2004 - 13:13 #7
party_dog>

Forklare hvad igen ?
Avatar billede arne_v Ekspert
03. december 2004 - 13:14 #8
benny>

C++ har kunnet det i 20 år så ideen er ikke så vanskelig at få.
Avatar billede the_party_dog Nybegynder
03. december 2004 - 13:14 #9
Det der med static og ikke static... Fik slet ikke noget med... Ked af at sige det... Kan du stille et meget lille eksempel op? Eller forklare med nogle mere beskrivende ord?
Avatar billede bennytordrup Nybegynder
03. december 2004 - 13:18 #10
Hvis en metode er erklæret som static (som GenerelFunktion()), skal der ikke laves en new TestClass for at bruge den.

Hvis en metode er erklæret uden static, skal der laves en new TestClass.


namespace Test {

  class TestClass {

    static void GenerelFunktion() {
    }

    void InstansFunktion() {
    }

  }
}


I ovenstående bruges GenerelFunktion således:

Test.TestClass.GenerelFunktion().

InstansFunktion bruges således:

Test.TestClass tClass = new Test.TestClass();
tClass.InstansFunktion()
tClass = null;
Avatar billede arne_v Ekspert
03. december 2004 - 13:25 #11
Nu har benny lavet et udmærket eksempel.

Jeg koder lidt anderledes men forskellen er ikke stor:

public class Test
{
    public static void KlasseMetode()
    {
        ...
    }
    public void InstansMetode()
    {
        ...
    }
}

som kaldes:

Test t = new Test();
t.IndstansMetode();

og

Test.KlasseMetode();
Avatar billede the_party_dog Nybegynder
03. december 2004 - 13:27 #12
forskellen er stor nok arne :)

Dit virker, fordi du gør den public, inden du gør den static, mens benny's ikke giver mig muligheden for at vælge generelFunktion.

Jeg skal ikek kunne sige hvorfor, men det virker nå jeg skriver:

public static void GenerelFunktion()

i min anden cs fil.... I får stor tak!
Avatar billede bennytordrup Nybegynder
03. december 2004 - 13:28 #13
Nej, og det er min fejl. Jeg glemte public (default er private).
Avatar billede the_party_dog Nybegynder
03. december 2004 - 13:29 #14
I har hjulpen mig meget... Det har givet mig meget bedre forståelse... :) Arne smid et svar, du har også ydet dit til denne tråd. :)
Avatar billede arne_v Ekspert
03. december 2004 - 14:25 #15
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