Avatar billede swamboo Seniormester
26. februar 2010 - 21:46 Der er 10 kommentarer og
1 løsning

Hvorfor er den ikk defineret????

Jeg mener netop jeg har defineret den - hvorfor virker det ikke??

        public struct FakturaForslag
        {
            public int KundeId;
            public String Navn;
            public String Adresse;
            public String Post_by;
            public String Telefon;
            public int maaned;
            public int start;
            public int TextId;
            public int Pris;
            public int Pudsefri;
            public int Fysisk;
            public int Tillaeg;

        }
        FakturaForslag[] forslag = new FakturaForslag(100);


Error    1    The type 'Pudser_regnskab.Form1.FakturaForslag' has no constructors defined    C:\Users\Projects\Pudser_regnskab\Pudser_regnskab\Form1.cs    35    36    Pudser_regnskab
Avatar billede sph1nx Nybegynder
26. februar 2010 - 21:57 #1
2 ting.

1. Som der står i fejl beskeden, så har du ikke defineret en constructor der kan tage en int. Men jeg gætter på at 100 er længden af det array du vil lave ?


2. du kan ikke lave en struct som array, du kan lave en ArrayList til at gemme instanser af din faktura forslag i.
Avatar billede janus_007 Nybegynder
26. februar 2010 - 21:59 #2
Du mangler jo også en constructor mand :)

http://msdn.microsoft.com/en-us/library/aa288208%28VS.71%29.aspx

Forresten... så vil jeg anbefale dig at bruge List istedet for den noget forældede [] !

Altså

var forslag = new List<FakturaForslag>();
Avatar billede janus_007 Nybegynder
26. februar 2010 - 22:01 #3
ArrayList er forresten ligeså forældet og forfærdelig at arbejde med!

Brug en generisk list :)
Avatar billede swamboo Seniormester
26. februar 2010 - 22:18 #4
Hvad er en generisk list??
Avatar billede ksoren Nybegynder
26. februar 2010 - 22:21 #5
prøv
new FakturaForslag[100];
Avatar billede janus_007 Nybegynder
26. februar 2010 - 22:29 #6
En generisk list er måden at arbejde med collections oa., som samtidigt er typesafe.
ArrayLists og [] er totalt oldschool, et levn tilbage fra .Net 1.1 og dem som stadig bruger dem, burde lige læse lidt op på .Net :)

Prøv at deklarere som jeg skrev..., så vil du se du får en typesafe collection af FakturaForslag som du eks.vis kan Add og meget andet nice.

En List kan naturligvis også instancieres med en størrelse, hvis man ønsker dette :)
Avatar billede swamboo Seniormester
26. februar 2010 - 22:33 #7
Janus_007 - den køber jeg - smid et svar, og jeg vender snart tilbage med flere spørgsmål om generisk list  haha :o)
Avatar billede swamboo Seniormester
26. februar 2010 - 22:35 #8
Et spørgsmål på falderebet: I msdn står følgende eksempel:
        List<string> dinosaurs = new List<string>();

        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

        dinosaurs.Add("Tyrannosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Mamenchisaurus");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Compsognathus");
Så går jeg ud fra at det hele bliver <string>s - kan man lave det så nogle af dem bliver int?
Avatar billede janus_007 Nybegynder
26. februar 2010 - 23:33 #9
Nej, det er netop hele fidusen med typesafety :) Altså at man kender typen og derved kan arbejde sikkert med indholdet.

Nu er det så en liste en strings, hvilket er i sig selv meget simpelt. I gamle dage og når man bruger arrays/ arraylists ;) hvis man skulle finde alle dem som starter med 'M', finder man:

for(int n = 0....)  / foreach ved arraylist = uhyre moderne :)
{
if ( dinosaurs[n].StartsWith("M", StringComparison.InvariantCultureIgnoreCase))
... add to result
}
Forestil dig hvor kompliceret det bliver når vi taler komplekse typer som eks.vis FakturaForslag.

Så rykkede det lidt i 3.0 til delegates:
var l = new List<string>();

        result = l.Find(
                delegate(string s)
                { return s.StartsWith("M", StringComparison.InvariantCultureIgnoreCase) }
                );

Men stadig noget hø... det var vidst de færreste der egentlig fattede/ brugte delegates på den måde. Det var jo meget nemmere at iterere igennem som tidligere.

Her må du så ikke stoppe, nu har vi lambda/ linq hurraaaaaa :), desværre er det ikke helt indgroet i folk endnu, men det kommer snigende hehe...

Nu gør man blot sådan her:

var l = new List<string>();
//smid nogle dinosaures ind og...
var result = l.Where(x => x.StartsWith("M"));
Avatar billede janus_007 Nybegynder
26. februar 2010 - 23:33 #10
.
Avatar billede swamboo Seniormester
27. februar 2010 - 00:21 #11
Sejt - det skal jeg altså lige dyrke lidt i morgen.
Tak fordi du indviede mig i denne "nye" teknik :o)

Også tak til jer andre for jeres 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