C# Een programma met meerdere class bestanden.

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Stanleyvc
  • Registratie: Mei 2004
  • Laatst online: 25-07-2024
Hoi,

Ik ben nog niet zo lang bezig met C# bezig.

In "Form1.cs" binnen de namespace heb ik een paar databases (struct) secties.

Nu heb ik een class file gemaakt en wil ik gebruik maken van de structs en de publieke variabelen van de
namespaces binnen "Form1".

Of hoe kan ik het hooft programma op delen ik kleinere secties en daar aparte bestanden van maken.

Maar hoe doe ik dat???


Alvast dank,
Stanley

Alle reacties


Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 12:38
Dit kan op meerdere manieren. Mijn advies is om deze MSDN Link te lezen. Hierin staat ook een voorbeeld.

Het maakt voor C# niet uit of er 2 classes in 1 file staan of dat deze in afzonderlijke files staan. In een IDE zoals Visual Studio (Code) kan je het automatisch naar een nieuwe bestand laten zetten (waardoor je ook niet hoeft te klooien of de namespaces goed staan.

Je zult iets moeten doen met de variabele door te geven, bijvoorbeeld door een functie te defineren die de gegevens mee neemt.

Deze bovenstaande informatie is heel erg generiek omdat er niet echt een voorbeeld is. Kan je een klein voorbeeld delen?

En het belangrijkste van allemaal in de template die je weg hebt gehaald:
Wat ik al gevonden of geprobeerd heb
...

Acties:
  • 0 Henk 'm!

  • eheijnen
  • Registratie: Juli 2008
  • Niet online
En deze kan interessant zijn bij het verdelen van de code van een klasse over twee of meer bestanden.
https://docs.microsoft.co...rtial-classes-and-methods

Zeal is een handig programma waarin je ook de documentatie voor .Net kunt installeren. Naast vele anderen.
https://zealdocs.org/

Wie du mir, so ich dir.


Acties:
  • 0 Henk 'm!

  • MrMonkE
  • Registratie: December 2009
  • Laatst online: 26-08 00:10

MrMonkE

★ EXTRA ★

P-Storm schreef op maandag 9 november 2020 @ 12:42:
Het maakt voor C# niet uit of er 2 classes in 1 file staan of dat deze in afzonderlijke files staan.
[...]
Volgens mij kan het wel problemen geven met windowsforms.
Met name voor het werken aan de GUI als ik het goed herinner vind de IDE het niet zo grappig als je in de class file van een form nog een andere class hebt. Hangt misschien van de volgorde af.

[ Voor 25% gewijzigd door MrMonkE op 09-11-2020 14:49 ]

★ What does that mean? ★


Acties:
  • 0 Henk 'm!

  • Kontsnorretje
  • Registratie: Augustus 2011
  • Laatst online: 14-06-2024
Stanleyvc schreef op maandag 9 november 2020 @ 12:24:
Hoi,

Ik ben nog niet zo lang bezig met C# bezig.

In "Form1.cs" binnen de namespace heb ik een paar databases (struct) secties.

Nu heb ik een class file gemaakt en wil ik gebruik maken van de structs en de publieke variabelen van de
namespaces binnen "Form1".

Of hoe kan ik het hooft programma op delen ik kleinere secties en daar aparte bestanden van maken.

Maar hoe doe ik dat???


Alvast dank,
Stanley
Als ik je bericht zo lees, lijkt het definiëren van een andere (database) class waarin de structs staan een betere optie. Op die manier blijft je Form class doen waar hij voor bedoeld is, het afhandelen van zaken rondom het formulier.

Vervolgens kun je de 2e class aanroepen op het moment dat je deze nodig hebt bij de interactie in het formulier.

Voor het maken van de classes verwijs ik je toch naar de documentatie van Microsoft of een tutorial voor beginners.

Acties:
  • 0 Henk 'm!

Verwijderd

Een meer concreet voorbeeld zou wel wenselijk zijn in code tags.

Net zoals Kontsnorretje al zei, je kan beter de database laag scheiden van het formulier en als je grote(re) hoeveelheden data ophaalt lijkt het net of je programma niet (meer) reageert en zou je mogelijk met een backgroundworker / threading gaan werken om dit te voorkomen.

Acties:
  • 0 Henk 'm!

  • M0nkeymen
  • Registratie: Maart 2009
  • Laatst online: 09:15

M0nkeymen

Monkeystyle!

Je hebt namespaces, bijv de namespace logging. Dit is een soort logische scheiding van code. Dit is gemaakt om code te organiseren. In deze namespace heb je bijv. een class Logger welke weer methods heeft(Log en Warning). Zie voorbeeld.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;

namespace Logging
{
    public class Logger
    {
        public void Log(string text)
        {
            Console.WriteLine(text);
        }

        public void Warning(string text)
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(text);
            Console.ResetColor();
        }
    }
}


Om dit ergens anders te gebruiken moet je naar deze namespace wijzen(using Logging;). Vervolgens maak ik een nieuwe instance van de class(var logger = new Logger();). Dan kun je de methods gebruiken van de class.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using Logging;

namespace testproject
{
    class Program
    {
        static void Main(string[] args)
        {
            var logger = new Logger();
            logger.Log("Een log bericht");
            logger.Warning("Een log bericht");
        }
    }
}


Er zijn wat dingen die ik niet benoemd hebt zoals het public keyword. Dit zijn access modifiers. Static is ook wel handig om te weten.

psn: M0nkeymen81 | Inglourious Guardians


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Verwijderd schreef op dinsdag 10 november 2020 @ 17:22:
Net zoals Kontsnorretje al zei, je kan beter de database laag scheiden van het formulier en als je grote(re) hoeveelheden data ophaalt lijkt het net of je programma niet (meer) reageert en zou je mogelijk met een backgroundworker / threading gaan werken om dit te voorkomen.
Gewoon maar even een tussendoorvraagje, maar wat heeft bovenstaande met de vraag van de TS te maken?

Of is het gewoon een handige tip en had je net zo goed kunnen schrijven : Als het regent is het handig om een paraplu te hebben.

Verwijderd

Gomez12 schreef op donderdag 12 november 2020 @ 14:28:
[...]
Of is het gewoon een handige tip en had je net zo goed kunnen schrijven : Als het regent is het handig om een paraplu te hebben.
Gewoon om een beter beeld te krijgen.

Wat de paraplu betreft dat ligt er aan wanneer het gewoon regen is dan wel, maar wanneer het jouw zoute tranen zijn dan kijk ik wel omhoog en wil ik ze toch wel even proeven!
Pagina: 1