Avatar billede iakob Nybegynder
13. november 2009 - 09:16 Der er 4 kommentarer og
1 løsning

Initialiser en struct

Jeg er ved at lave to structs ( DateMonth og MonthSpan ) som jeg gerne vil have til at fungere som DateTime og TimeSpan.

Men jeg er løbet ind i et problem omkring initialisering.

Hvis man skriver:
DateTime dt= new DateTime();
så initialiseres dt til 1 januar år 1.

Men jeg kan ikke få lov at angive en default constructor i en struct - og heller ikke få lov at initialisere member variables - ala:

private int year = 1;

Så hvordan får jeg initialiseret min DateMonth til 1. januar år 1 ligesom DateTime bliver det?
Avatar billede Spotgun Seniormester
13. november 2009 - 10:28 #1
Skal det partout være en struct? Du kan jo evt. lave det om til en class, så kan du initialisere den som det passer dig.
Avatar billede iakob Nybegynder
13. november 2009 - 10:45 #2
Ja, det ved jeg. Og det er også den løsning jeg lige nu arbejder med.

Men det svarer ikke spørgsmålet. Jeg undrer mig over hvordan det er lykkes Microsoft at initialisere en DateTime, som er en struct, til noget andet end måned 0 i år 0.
Avatar billede kza Nybegynder
14. november 2009 - 01:04 #3
Der er ikke noget hokus pokus med initialiseringen af DateTime struct'en.

En DateTime indeholder ikke separate member-variable for day, month, etc. Den indeholder kun en variabel, nemlig:
ulong dateData;

Når dateData er 0, tolkes det som dato-tiden "01-01-0001 00:00".
Hvis dateData er 9857309610008147857 tolkes det som dato-tiden "14-11-2009 01:01:55".

/Klaus
Avatar billede iakob Nybegynder
14. november 2009 - 07:20 #4
Hm.. sådan er det naturligvis. Tak for at opklare det for mig. Skriv et svar, så giver jeg dig dine points.
Avatar billede kza Nybegynder
15. november 2009 - 16:50 #5
Et svar.
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