Matsemann Skrevet 16. november 2009 Del Skrevet 16. november 2009 (endret) Hei! Normalt styrer jeg ikke på med C#, men det er det vi bruker i IT-timene (Visual Web). Jeg vet man kan finne lengden av et array med arrayNavn.Length; Problemet er at det ikke gir svaret jeg er på jakt etter. string[,] arrSpm = { {"Spørsmål 1", "alt1", "alt2", "alt3", "alt4"}, {"Spørsmål 2", "2alt1", "2alt2", "2alt3", "2alt4"}, {"Spørsmål 3", "3alt1", "3alt2", "3alt3", "3alt4"}}; Kjører jeg arrSpm.Length får jeg da 15 som svar, mens jeg egentlig ønsker å få 3. Hvordan skal jeg eventuelt formulere dette, eller skal jeg bygge opp arrayen min annerledes? Det jeg gjør nå er at jeg har en variabel der jeg manuelt skriver inn hvor mange det er, men det er lite dynamisk. Finnes det forresten en måte å gjøre dette på i C#? <?php $fruits = array ( "fruits" => array ( "a" => "orange", "b" => "banana", "c" => "apple" ), "numbers" => array ( 1, 2, 3, 4, 5, 6 ), "holes" => array ( "first", 5 => "second", "third" ) ); ?> Endret: Tilleggsspørsmål: Hvordan får man fargelegging av kode her på forumet? Endret 16. november 2009 av Matsemann Lenke til kommentar
GeirGrusom Skrevet 16. november 2009 Del Skrevet 16. november 2009 (endret) For å hente lengden av et flerdimensjonalt array bruker du GetLength funksjonen. var dim1 = arrSpm.GetLength(0); var dim2 = arrSpm.GetLength(1); edit: etter det jeg vet er det ingen automatisk syntax highlighting her. Endret 16. november 2009 av GeirGrusom Lenke til kommentar
Matsemann Skrevet 16. november 2009 Forfatter Del Skrevet 16. november 2009 Takk, det fungerte glimrende! Er ikke så flink med msdn enda, men det kommer vel. Evt. bruker man noe annet? Vel, da skal jeg fortsette å bevise for læreren min at det finnes bedre måter å legge opp en quiz på enn å kopiere samme kode inn i 25 dokumenter og endre spørsmålene. Dessverre er jeg mer stø i PHP, så møter litt problemer i C#. Lenke til kommentar
GeirGrusom Skrevet 16. november 2009 Del Skrevet 16. november 2009 Hehe. Det er sjeldent man kopierer og limer inn kode. Dersom en må gjøre det, er det som regel programmert feil. Lenke til kommentar
Matsemann Skrevet 16. november 2009 Forfatter Del Skrevet 16. november 2009 Jepp, problemet er å få mitt eksempel til å virke, da jeg ikke er vant til C#. Nå sliter jeg med en ting. int antallSpm = 3;int[] arrSvar = new int[antallSpm]; er ikke greit, mens const int antallSpm = 3;int[] arrSvar = new int[antallSpm]; er. const int antallSpm = arrSpm.GetLength(0);int[] arrSvar = new int[antallSpm]; Denne virker heller ikke. Koden ligger under "public partial class _Default : System.Web.UI.Page ", og jeg regner med at det er det som er problemet? Hvilke regler for kode gjelder her? Lenke til kommentar
GeirGrusom Skrevet 16. november 2009 Del Skrevet 16. november 2009 Vel, problemet ditt er litt teknisk, og har med initialisering av verdier å gjøre. Jeg foreslår at du bruker en annen løsning, og initialiserer slik data i constructoren til klassen din, for eksempel: public class MySpm { private int[] arrSvar; public int[] Svar { get { return arrSvar; } } public MySpm(int antall_spm) { arrSvar = new int[arrSvar]; } } Generelt sett vil jeg påstå at initialisering av verdier for en klasse utenfor constructoren er uheldig. Unngå det med mindre du har en god grunn til å gjøre det (for eksempel for readonly egenskaper) Det er også anbefalt å bruke List<T> og lignende klasser fremfor arrays med mindre det er helt nødvendig å bruke arrays (som det sjeldent er) Grunnen er igjen teknisk, men det er på grunn av at retur av arrays fra funksjoner vil ofte føre til at arrayet blir kopiert, som ikke er helt heldig med tanke på ytelse. Da er det bedre å returnere List eller ReadOnlyList. List<T> tar et generisk argument som er datatypen for listen. Eksempelvis: List<int> MyIntegerList = new List<int>(); Lenke til kommentar
Matsemann Skrevet 16. november 2009 Forfatter Del Skrevet 16. november 2009 Igjen takk for svar! Problemet her er at klasser, objektorientering osv. ikke er en del av pensum. Egentlig har vi bare lært variabler, løkker, if-tester og arrays. Ikke funksjoner eller noe. Jeg bruker egentlig bare det jeg kan fra andre språk. Og siden dette er litt på siden av hva jeg egentlig skal gjøre ønsker jeg ikke å gjøre det så veldig avansert (men jeg tar med meg kommentarene dine videre ). Jeg tror jeg får gå for min originale løsning jeg da. At man får hardkode hvor mange spørsmål det er. Jeg skjønner at det ikke er særlig optimalt eller god måte å gjøre det på (det å stappe alt i _Default) // Rediger dette om man skal legge til flere spørsmål string[,] arrSpm = { {"Spørsmål 1", "alt1", "alt2", "alt3", "alt4"}, {"Spørsmål 2", "2alt1", "2alt2", "2alt3", "2alt4"}, {"Spørsmål 3", "3alt1", "3alt2", "3alt3", "3alt4"}}; int[] rettSvar = { 1, 2, 3, 4 }; // Hvilket alternativ som er rett const int antallSpm = 3; // --- int[] arrSvar = new int[antallSpm]; // Oppretter array der svarene skal lagres int spmNummer = 0; // Hvor langt man har kommet osv... Jeg ser jeg kanskje kunne brukt List, men, ja, vil ikke dra den for langt nå. Takk for svar ihvertfall 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å