Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[.NET] Voordelen class static maken

Pagina: 1
Acties:

Verwijderd

Topicstarter
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        class Class1
        {
            static string text;

            public static void PrintLine(string text)
            {
                Class1.text = text;
                Console.WriteLine(Class1.text);
            }
        }

        static class Class1
        {
            static string text;

            public static void PrintLine(string text)
            {
                Class1.text = text;
                Console.WriteLine(Class1.text);
            }
        }


Wat is het voordeel van een class static maken? Het eerste voorbeeld werkt net zo goed als het tweede. Het enige dat ik kan bedenken is dat je geen instance van de klasse kan maken: is dat het enige nut?

Een tweede vraag, waarom kan je in het eerste voorbeeld wel een instance maken. Voor zover ik op internet kan vinden moet een niet static klasse altijd een constructor hebben. Het eerste voorbeeld compiled echter prima.

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Verwijderd schreef op maandag 28 april 2008 @ 14:18:
Wat is het voordeel van een class static maken? Het eerste voorbeeld werkt net zo goed als het tweede. Het enige dat ik kan bedenken is dat je geen instance van de klasse kan maken: is dat het enige nut?
Jouw voorbeeld zou als het goed is niet zonder meer compileren. Static classes mogen niet voor top level classes. Alleen voor member classes mag het, en die wil je om dezelfde redenen static maken als member variabelen.
Een tweede vraag, waarom kan je in het eerste voorbeeld wel een instance maken. Voor zover ik op internet kan vinden moet een niet static klasse altijd een constructor hebben. Het eerste voorbeeld compiled echter prima.
Een gewone class heeft altijd een contructor, eentje zonder parameters, die hoef je niet zelf te definieren, dan neemt 'ie de default contructor over.

Edit: ik redeneer vanuit Java overigens, ik weet niet of .Net dat anders doet (zag net pas dat je je code als C# format).

[ Voor 28% gewijzigd door Hydra op 28-04-2008 14:22 ]

https://niels.nu


Verwijderd

Topicstarter
Voor de duidelijkheid, het zijn twee aparte voorbeelden in 1 codeblok.

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Verwijderd schreef op maandag 28 april 2008 @ 14:22:
Voor de duidelijkheid, het zijn twee aparte voorbeelden in 1 codeblok.
Is dat een reactie op mijn post? Want dat had ik wel begrepen.

https://niels.nu


Verwijderd

Topicstarter
Misschien kan je je eerste comment dan wat toelichten, want ik snap het niet.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Static classes in .Net zijn hele andere dingen dan static classes in Java. Een static class in .Net is eigenlijk een container voor statische members. Daarom kun je er ook geen instance van maken, aangezien dat weinig nut heeft als er toch geen instance members in staan die geassocieerd worden met een object. System.Math is een voorbeeld van een static class. Je wilt je class static maken als je wilt voorkomen dat je er per ongeluk toch een instance van maakt (hoewel je dat ook kunt voorkomen met een private constructor)
Verwijderd schreef op maandag 28 april 2008 @ 14:26:
Misschien kan je je eerste comment dan wat toelichten, want ik snap het niet.
Hydra's punt gaat over Java, niet over .Net.

[ Voor 17% gewijzigd door .oisyn op 28-04-2008 14:30 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Verwijderd schreef op maandag 28 april 2008 @ 14:26:
Misschien kan je je eerste comment dan wat toelichten, want ik snap het niet.
Wat snap je niet? In Java mag je een top level (gewone) class niet static maken. Punt. Alleen member classes mogen static gemaakt worden, net zoals dat je member variabelen of methoden static kunt maken.

Voorbeeld:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Test
{
    public void test()
    {
        InnerTest.hello();
    }
    static class InnerTest {
        static void hello() 
        {
            System.out.println("Hello world!");
        }
    }
}
.oisyn schreef op maandag 28 april 2008 @ 14:29:
Hydra's punt gaat over Java, niet over .Net.
Ah, ik wist niet dat .Net dat anders deed. In Java maak je een constructor gewoon private als je niet wil dat er instanties van gemaakt worden. Anyway, de TS had even moeten melden dat het specifiek over .Net ging.

[ Voor 22% gewijzigd door Hydra op 28-04-2008 14:33 ]

https://niels.nu


Verwijderd

Topicstarter
Is het voor .Net ook zo dat je geen constructor hoeft te definieren en dat in dat geval de 'default' constructor wordt gebruikt?

[ Voor 22% gewijzigd door Verwijderd op 28-04-2008 14:37 ]


  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Verwijderd schreef op maandag 28 april 2008 @ 14:36:
Is het voor .Net ook zo dat je geen constructor hoeft te definieren en dat in dat geval de 'default' constructor wordt gebruikt?
Yup. Maar dat zou je zelf ook kunnen proberen natuurlijk.

[ Voor 10% gewijzigd door Hydra op 28-04-2008 14:37 ]

https://niels.nu


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Overigens had je natuurlijk ook gewoon even de handleiding kunnen lezen
The advantage of using a static class is that the compiler can check to make sure that no instance members are accidentally added. The compiler will guarantee that instances of this class cannot be created.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op maandag 28 april 2008 @ 14:37:
Overigens had je natuurlijk ook gewoon even de handleiding kunnen lezen

[...]
Dat had ik al gevonden, zoals je ook in mijn startpost kan lezen. Ik vroeg me af of het nog ander nut heeft.
Pagina: 1