[C#] variabele van de ene klasse in de andere gebruiken

Pagina: 1
Acties:
  • 284 views

Onderwerpen


Acties:
  • 0 Henk 'm!

  • V1ncam
  • Registratie: November 2009
  • Laatst online: 12-12-2021
Hallo,

ik ben een beginner in C#, en ik zit even vast omdat ik in een methode van klasse 1, een variable wil gebruiken uit klasse 2. En ik weet even niet hoe dat moet. Kan iemand mij helpen?

Ook is het misschien handig om te zeggen dat ik geen parameters kan meegeven aan de betreffende methode, omdat het een get, return methode is.

Alvast bedankt

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
C#:
1
2
3
4
MyClassA a = new MyClass("foo", "bar");
MyClassB b = new MyClass("abc");

b.SomeProperty = a.AnotherProperty

:?

Lijkt me geen rocketscience? Maar waarschijnlijk (lees: dat weet ik wel zeker) ben je wat te kort door de bocht geweest met je probleemomschrijving ;)

Als je binnen b een property van a wil kunnen benaderen zou je aan b's constructor bijvoorbeeld a mee kunnen geven en die in een private variabelen mikken en bewaren voor latere access.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
static void Main()
{
   MyClassA a = new MyClassA("woot","wpei");
   MyClassB b = new MyClassB(a);

   b.SomeMethod(); //Zal de waarde van a.Foo in een messagebox tonen; je invoked echter een method van b.
   Debug.Writeline(b.SomeProperty); //Zal de waarde van a.Foo tonen in het debug window; echter nu benader je die waarde middels een property van b
}

public class MyClassA {
    public string Foo { get; private set;}
    public string Bar { get; private set; }

    public MyClassA(string foo, string bar)
    {
        this.Foo = foo;
        this.Bar = bar;
    }
}

public class MyClassB
{
    private MyClassA _a;

    //Ctor
    public MyClassB(MyClassA a)
    {
        _a = a;
    }

    //Method
    public void SomeMethod()
    {
        MessageBox.Show(_a.Foo);
    }

    //Property
    public string SomeProperty
    {
        get { return _a.Foo; }
    }
}


Zaken die je wil weten/uitzoeken:
Access modifiers
Scope

En dan zijn er 1001 andere mogelijkheden; afhankelijk van hoe A en B in elkaar steken. Als A een static class is bijvoorbeeld heb je weer heel andere manieren. Hoe dan ook; dit is erg basic en iets wat je na een fatsoenlijke tutorial toch echt wel moet beheersen.
CrazyProf schreef op dinsdag 28 september 2010 @ 14:14:
omdat het een get, return methode is.
Wat jij bedoelt is een property. Properties hebben getters en/of setters. Methodes niet.

[ Voor 99% gewijzigd door RobIII op 28-09-2010 14:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:53

Haan

dotnetter

Dat is les 1 of 2 bij leren programmeren.. Maar post eens iets meer context, want het klinkt alsof je iets niet helemaal op de goede manier aan het doen bent.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
:P Waar ik dus nog niet aan toegekomen was: We hebben het al eerder gezegd en ik doe het nu weer: Hou a.u.b. onze Quickstart ter hand als je een topic opent. Dan weet je zeker dat je topic in orde is; wat het nu niet is. Ik mis relevante(!) code, wat je hebt geprobeerd/gezocht/gevonden etc. En wij houden niet van raadspelletjes waar we allemaal gaan raden wat je probleem of je oplossing zou kunnen zijn. Jij moet ons helpen jou te helpen ;)

Open gerust een nieuw topic, maar hanteer dan dus wel onze Quickstart a.u.b. Ook is het handig als je in ieder geval de basics beheerst; dan kunnen we een beetje op niveau praten. Begrijp me niet verkeerd, we zijn allemaal ooit bij 0 begonnen maar als wij het over properties, methods, constructors, access modifiers en dat soort zaken hebben is het wel handig als je ook weet wat we daar mee bedoelen ;) Zolang die termen nog wazig zijn voor je (en geloof me, dat is het ooit voor ons allemaal wel op een bepaald punt geweest) wordt het lastig je te helpen.

[ Voor 24% gewijzigd door RobIII op 28-09-2010 14:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.