[C#] Zien welke constructor aangeroepen werd?

Pagina: 1
Acties:

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Topicstarter
Ik heb een class met twee constructors:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private bool secondC = false;

public frmAfspraakToevoegen()
{
    InitializeComponent();
    initStuff();
}

public frmAfspraakToevoegen(DateTime datum)
{
    InitializeComponent();
    this.datum = datum;
    secondC = true;
    initStuff();
}


Nu wil ik in een methode weten wanneer de tweede constructor aangeroepen werd. Nu doe ik dat met die boolean "secondC":

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void controleerAfspraak()
{
    string sqlDatum;

    if (secondC)
    {
        sqlDatum = string.Format("{0:yyyy-MM-dd}", datum);
        calendarDate.Value = datum;
        secondC = false;
    }
    else
    {
        sqlDatum = string.Format("{0:yyyy-MM-dd}", calendarDate.Value);
    }
}


Ik heb dus een form met een kalender (calendarDate) en wanneer dat form rechtstreeks aangeroepen wordt is de geslecteerde datum van de kalender de huidige datum. Het kan echter ook zijn dat het form uit een ander form aangeroepen wordt en die stuurt dan een datum mee en dan wordt de tweede constructor aangeroepen.
Bedoeling is zo dat de string sqlDatum gevuld wordt, en daar zijn twee manieren voor :
of) wordt er een datum van buitenaf meegegeven, gebruik deze
of) geen datum van buitenaf, gebruik de geselecteerde datum van de kalender
secondC zet ik daarna terug op false, omdat de datum van buitenaf slechts eenmaal gebruikt mag worden.

Nu werkt dit allemaal wel maar ik vraag me alleen af of dit niet netter kan? Op MSDN kan ik zo niet direct wat vinden.

March of the Eagles


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Als je met .net 2.0 werkt dan kan je gebruik maken van een nullable type. Dat is een mechanisme waardoor value types ook null kunnen zijn. Een nullable type declareer je door een vraagteken ( ? ) achter het type te zetten
C#:
1
2
3
4
5
DateTime? myDate;

myDate = null;

DateTime dateToInsert = myDate ?? DateFromCalendar;


?? is een extra operator om of de waarde er links van terug te geven of als die null is de waarde er rechts van.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-02 17:10

Gerco

Professional Newbie

Lijkt me persoonlijk helemaal niet nodig om dit te doen. Waarom stel je niet de datum van de calender in als de tweede constructor word aangeroepen? Dan kun je in je methode gewoon altijd de geselecteerde datum gebruiken.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Topicstarter
Hoe eenvoudig soms iets kan zijn 8)7 Thanks.

@rwb, nee dat ken ik niet maar ik heb bepaalde situaties waar ik dat wel kan gebruiken, dus ook thanks :)

March of the Eagles


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Gerco schreef op maandag 16 oktober 2006 @ 20:09:
Lijkt me persoonlijk helemaal niet nodig om dit te doen. Waarom stel je niet de datum van de calender in als de tweede constructor word aangeroepen? Dan kun je in je methode gewoon altijd de geselecteerde datum gebruiken.
Als dat kan is dat natuurlijk nog makkelijker en mooier. Ik ging er even van uit dat dat niet gewenst was in dit geval.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 23-12-2025

_Thanatos_

Ja, en kaal

rwb schreef op maandag 16 oktober 2006 @ 20:06:
Als je met .net 2.0 werkt dan kan je gebruik maken van een nullable type. Dat is een mechanisme waardoor value types ook null kunnen zijn. Een nullable type declareer je door een vraagteken ( ? ) achter het type te zetten
C#:
1
2
3
4
5
DateTime? myDate;

myDate = null;

DateTime dateToInsert = myDate ?? DateFromCalendar;


?? is een extra operator om of de waarde er links van terug te geven of als die null is de waarde er rechts van.
wooow, waarom komen dat soort handigheidjes nou *niet* naar voren in al die talloze seminars enzo over "de nieuwe C#"? _/-\o_

日本!🎌


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

.oisyn

Moderator Devschuur®

Demotivational Speaker

wooow, waarom leest een geïnteresseerde programmeur niet zelf even de "what's new"? ;)

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.


  • RedBeard
  • Registratie: April 2006
  • Niet online
Waarom doe je het niet gewoon zo:
C#:
1
2
3
4
5
6
7
8
9
10
public frmAfspraakToevoegen() :this(DateTime.Now)
{
}

public frmAfspraakToevoegen(DateTime datum)
{
    InitializeComponent();
    this.datum = datum;
    initStuff();
}

In dit geval wordt je datum altijd ingesteld en hoef je geen controle te doen of de datum niet null is.

Of begrijp ik je probleem niet goed?

I'm not anti-social, I'm just not user friendly

Pagina: 1