Gå til innhold

Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet (endret)

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
Skrevet
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

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet

Genialt forklart! :w00t:

 

Av alle mulige objekter som finnes i verden, fungerte And bemerkelsesverdig bra!

 

Ser dog for meg en del forvirring om du hadde hatt kodesnutter i VB eller T-SQL og skulle bruke AND som i A = 1 AND B = 2! :cool:

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...