Velena Skrevet 2. mai 2008 Del Skrevet 2. mai 2008 (endret) Holder på med et prosjekt, hvor plasseringen av deklarasjonene til to variabler har noe å si for programmets funksjonalitet using System; using System.Collections.Generic; using System.Diagnostics; using System.Text; namespace Logarithms { class Myfuncs { int count = 0;//problemet er her int[,] arrayStorage = new int [30,4];//og her.. public static void List(int type, int indexStart, int indexEnd, int value ) { if (type >= 9 && type <= 14) { arrayStorage[count, 0] = type; arrayStorage[count, 1] = indexStart; arrayStorage[count, 2] = indexEnd; arrayStorage[count, 3] = value; count ++; return; } } } } Når jeg prøver å kompilere denne koden, kommer følgende feilmelding opp "An object reference is required for the nonstatic field, method, or property 'Logarithms.Myfuncs.arrayStorage". Den samme kommer opp for count. Hvis jeg derimot deklarer dem innenfor funksjonen de blir brukt i, går det helt fint. Er det noen som vet hvorfor jeg ikke kan plassere deklareringene der de er? Edit: rettet en feil i koden. Endret 2. mai 2008 av Velena Lenke til kommentar
GeirGrusom Skrevet 2. mai 2008 Del Skrevet 2. mai 2008 http://blogs.msdn.com/ericlippert/archive/...s-part-one.aspx Legg til en constructor, og initialiser variablene der. namespace Logarithms { class Myfuncs { int count; int[,] arrayStorage; public MyFuncs() { count = -1; arrayStorage = new int [30,4]; } public static void List(int type, int indexStart, int indexEnd, int value ) { if (type >= 9 && type <= 14) { arrayStorage[count, 0] = type; arrayStorage[count, 1] = indexStart; arrayStorage[count, 2] = indexEnd; arrayStorage[count, 3] = value; count ++; return; } } } } Lenke til kommentar
Velena Skrevet 2. mai 2008 Forfatter Del Skrevet 2. mai 2008 (endret) Takker Geirgrusom, men det virker fortsatt å være noe galt. Compileren forteller meg at Myfuncs() må ha en "return type". Edit: Fant en liten skrivefeil i koden din, kompileren gir nå den samme feilen som i utgangspunktet (regner med at MyFuncs skulle være Myfuncs). Endret 2. mai 2008 av Velena Lenke til kommentar
GeirGrusom Skrevet 2. mai 2008 Del Skrevet 2. mai 2008 ah, hehe, jeg som skrev feil Den skal hete Myfuncs, ikke MyFuncs Lenke til kommentar
Manfred Skrevet 2. mai 2008 Del Skrevet 2. mai 2008 Menneh... vil ikke den koden din prøve å lagre inn første informasjonen i arrayStorage[-1,0] ? Negative indexer er vel ikke noe særlig En annen ting er om du heller burde opprettet en struct eller klasse og så laget en List<T> av denne, f.eks. Det der så ekstremt lite oversiklig ut, og lett å gjøre feil. Lenke til kommentar
Velena Skrevet 2. mai 2008 Forfatter Del Skrevet 2. mai 2008 Du har et poeng når det gjelder indexen, hadde originellt hentet count verdien fra en annen form, hvor verdien til count økte før jeg la verdier i arrayStorage, derfor var default verdien -1. Hva skal List <T> være? Når det gjelder det siste du sa føler jeg det er oversiktlig nok til mitt formål. Lenke til kommentar
GeirGrusom Skrevet 2. mai 2008 Del Skrevet 2. mai 2008 Ja, jeg tror jeg heller ville laget en struktur i en array istedet public struct FunkEntry { private int m_type; private int m_index_start; private int m_index_end; private int m_value; public int Type { get { return m_type; } set { m_type = value; } } public int IndexStart { get { return m_index_start; } set { m_index_start = value; } } public int IndexEnd { get { return m_index_end; } set { m_index_end = value; } } public int Value { get { return m_value; } set { m_value = value; } } public FunkEntry(int type, int start, int end, int value) { m_type = type; m_index_start = start; m_index_end = end; m_value = value; } } public class MyFuncs { private List<FunkEntry> m_entries; public List<FunkEntry> Entries { get { return m_entries; } } public FunkEntry this[int index] { get { return m_entries[index]; } set { m_entries[index] = value; } } public MyFuncs() { m_entries = new List<FunkEntry>(); } } public static class Program { static void Main() { MyFuncs funk = new MyFuncs(); funk.Entries.Add(new FunkEntry(0, 0, 1, 100)); Console.WriteLine(funk[0].Value.ToString()); } } For ekesempel da... Lenke til kommentar
Velena Skrevet 2. mai 2008 Forfatter Del Skrevet 2. mai 2008 Det du nettopp viste er noe nytt for meg, blir det noe slikt hvis jeg skal sette en verdi i FunkEntry?: Myfuncs.FunkEntry[2].Set(9); Lenke til kommentar
GeirGrusom Skrevet 2. mai 2008 Del Skrevet 2. mai 2008 Myfunks[2] = new FunkEntry(1, 2, 3, 4) etc. eller Myfunks.Entries[2].Value = 9; Lenke til kommentar
Velena Skrevet 2. mai 2008 Forfatter Del Skrevet 2. mai 2008 så hver indeks i MyFunks inneholder fire verdier ( type, indeksstart, indeksslutt og verdi)? Lenke til kommentar
Velena Skrevet 3. mai 2008 Forfatter Del Skrevet 3. mai 2008 Et spørsmål til, hva gjør denne "structen" mer oversiktlig enn min kode? Lenke til kommentar
GeirGrusom Skrevet 3. mai 2008 Del Skrevet 3. mai 2008 Alle feltene er navngitt, og du har mer kontroll over hva som skjer. Dessuten er det mye enklere å hente ut en rad av gangen. Lenke til kommentar
Velena Skrevet 3. mai 2008 Forfatter Del Skrevet 3. mai 2008 Hvis det er hele forskjellen, tror jeg at jeg vil holde meg til det jeg er trygg på. Men problemet med deklareringen er fortsatt ikke løst, selv om jeg plasserer dem i constructoren kommer fortsatt den samme feilmeldingen opp. Lenke til kommentar
Gråskjegg Skrevet 4. mai 2008 Del Skrevet 4. mai 2008 Hvis det er hele forskjellen, tror jeg at jeg vil holde meg til det jeg er trygg på.Men problemet med deklareringen er fortsatt ikke løst, selv om jeg plasserer dem i constructoren kommer fortsatt den samme feilmeldingen opp. Problemet er at funksjonen er statisk mens variablene ikke er det. Enten endre funksjonen til å ikke være statisk, eller gjør variablene statiske. - grå - Lenke til kommentar
Velena Skrevet 4. mai 2008 Forfatter Del Skrevet 4. mai 2008 Takker så mye Gråskjegg, koden lar seg kompilere nå ^_^. Lenke til kommentar
GeirGrusom Skrevet 4. mai 2008 Del Skrevet 4. mai 2008 d'oh! jeg så ikke at funksjonene var static XD Lenke til kommentar
Manfred Skrevet 5. mai 2008 Del Skrevet 5. mai 2008 Men jeg ser absolutt ingen grunn til å ikke lære seg structs / classes. Lenke til kommentar
Velena Skrevet 5. mai 2008 Forfatter Del Skrevet 5. mai 2008 Tenker jeg lærer meg det en annen gang. Off topic: Er det noen som vet om en bra Actionscript ressurs på nettet, og i hvilket delforum burde jeg stille spørsmål om actionscript? Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå