Gå til innhold

Anbefalte innlegg

Hei!

Driver på i Visual Studio.

 

Skal lage en random number generator og har skrevet følgende kode, som jeg mener burde funket.

 

 class Randomnumber
   {
        
        Random RandomClass = new Random();
        int RandomNumber = RandomClass.Next(1, 12);
       
   }

 

Får feilmeldingen:

A field initializer cannot reference the nonstatic field, method, or property 'Blackjack.Randomnumber.RandomClass'

 

 

Noen som vet hva feilen kan være, eller hjelpe til med en random generator?

Endret av I_Want_a_Wii
Lenke til kommentar
Videoannonse
Annonse

Kremt, kan du programmering? Du må ikke blande klassedefinisjoner og funksjoner. Du har (om man ser bort fra andre feil) laget en klasse med 2 medlemmer som heter RandomClass og RandomNumber. Og init'en av RandomNumber refererer til RandomClass, som ikke funker spesielt bra.

 

Du vil kanskje ha noe slikt?

class Randomnumber
{       
 private int randomNumber;

 public Randomnumber()
 {
   randomNumber = new Random().Next(1, 12);
 }
 ...       
}

Endret av johneinar
Lenke til kommentar
Kremt, kan du programmering? Du må ikke blande klassedefinisjoner og funksjoner. Du har (om man ser bort fra andre feil) laget en klasse med 2 medlemmer som heter RandomClass og RandomNumber. Og init'en av RandomNumber refererer til RandomClass, som ikke funker spesielt bra.

 

Du vil kanskje ha noe slikt?

class Randomnumber
{       
 private int randomNumber;

 public Randomnumber()
 {
   randomNumber = new Random().Next(1, 12);
 }
 ...       
}

7751327[/snapback]

 

Har desverre ikke fått inn det med klasser, konstruktører og funksjoner helt :(

Men takk for svar anyway :D

Lenke til kommentar

Enda et spørsmål:

 

Skal vel lage en "instance" av denne randomfunksjonen (Eller har jeg feil?)

 

Det er en knapp bare for å teste om random generatoren fungerte.

Prøvde å

 private void btnRandom1_Click(object sender, EventArgs e)
       {
           Randomnumber rnd = new Randomnumber();
           MessageBox.Show(rnd.ToString);
           
       }

 

Randomnumber er jo en int, så det burde vel fungere, men det gjør det jo ikke, så da har jeg jo garantert feil :p

 

 

Ps. Jeg tar gjerne inn gode forklaringer på forskjeller på:

 

Klasse

Funksjon

Instance

Endret av I_Want_a_Wii
Lenke til kommentar

en klasse er en teoretisk del med kode, for å strukturere koden på en litt mer logisk måte.

Se for deg, tja, en and.

En and har en rekke med egenskaper og evner, vi kan kalle egenskaper for Properties i programmering, og evner for Funksjoner

Men si at vi har en Stokkand, en stokkand arver alle egenskaper og evner fra and, i tillegg til å definere egne, eller endre evner og egenskaper fra and.

public class And;

 

public class Stokkand : And

 

En instance, er et ferdig produkt av en klasse, f.eks. en Stokkand ved navn Hans.

Hans er unik, i motsetning til Stokkand, som er en type, men har alle egenskaper og evner som Stokkand har, men med forskjellige verdier.

 

Funksjoner er noe som er tatt fra matematikk, dette med tanke på at all programmering bunner ut i matematikk.

 

f.eks. x = sin(120) er en funksjon som ville sett helt lik ut i matematikk som i programmering, og fungert på samme måte i bortimot alle programmeringsspråk.

En funksjon kan ta en rekke parameter (inndata) og et parameter som alltid inngår i en funksjon som er en ikke-statisk funksjon, som er en del av en klasse, har et "hemmelig" parameter som heter "this" i C#,C++ og Java, og Me i Visual Basic

Dette er en peker til objektet som funksjonen hører til.

La oss si at Stokkand har en funksjon som heter "Svøm"

denne får en stokkand til å svømme, og er da en av evnene til Hans.

Så hvis noen roper "Hans! Svøm!" (Hans.Svøm()) så svømmer Hans.

Du nkan ikke kalle "Stokkand.Svøm()" siden stokkand er en datatype, men hvis du hadde deklarert Svøm som en statisk funksjon, ville den fungert, men den hadde ingen instancer å peke til, og ville ikke fungert uten omskriving. Dette er laget for å kunne ha en generell funksjon, som ikke jobbet med et objekt.

 

Det en klasse også kan gjøre i moderne programmeringsspråk, er å implementere interfaces interfaces er ikke eksekverbar kode, men er laget for å garantere at en klasse har muligheten som interfacet krever, f.eks. IButtonControl i C#, som garanterer at et objekt som implementere IButtonControl, fungerer som en knapp.

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...