Avatar billede cmol Nybegynder
27. november 2008 - 10:42 Der er 4 kommentarer

Array problem i C#

Hej

Jeg har et problem med at definere et array, som jeg senere kan tildele værdier.

Tidligere har jeg oprettet mit array med en masse 0'er til at starte med, men det er jo ikke holdbart.

Dette eksempel beskriver mit problem ganske godt.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Struct
{
    public struct books
    {
        public string f_name;
        public string s_name;
        public string book_name;
        public int year;
        public int page_count;
    }
    class Program
    {
        static void Main()
        {
            books[] samling;
           
            //Hvis jeg sletter den kodelinie, melder "microsoft Visual c# fejl: "Use of unassigned local variable"
            samling = null;
           

            samling[0].f_name = "H. C.";
            samling[0].s_name = "Andersen";
            samling[0].book_name = "Den grimme ælling";
            samling[0].year = 1900;
            samling[0].page_count = 200;
           

            samling[1].f_name = "A. P.";
            samling[1].s_name = "Møller";
            samling[1].book_name = "Mit liv som pengetank";
            samling[1].year = 2000;
            samling[1].page_count = 852;

            samling[2].f_name = "Linus";
            samling[2].s_name = "Torvaldson";
            samling[2].book_name = "Building the kernel";
            samling[2].year = 1995;
            samling[2].page_count = 642;

            samling[3].f_name = "Steve";
            samling[3].s_name = "Balmer";
            samling[3].book_name = "Millinium Edition and down";
            samling[3].year = 1998;
            samling[3].page_count = 250;

            for (int x = 0; x < samling.Length; x++)
            {
                Console.WriteLine("Book name: {0}\nAuthor:    {1} {2}\nYear:      {3}\nPage count: {4}", samling[x].book_name, samling[x].f_name, samling[x].s_name, samling[x].year, samling[x].page_count);
                Console.WriteLine("\n-------------------------------------------------------------\n");
            }
            Console.ReadKey();
        }
    }
}


Nogen der har en løsning på dette problem?

Claus :)
Avatar billede erikjacobsen Ekspert
27. november 2008 - 11:17 #1
Du skal
1) Give arrayet en størrelse
2) Lave en new books i hver indgang inden du tilordner værdier

Eller benytte en ArrayList (List) - hvor størrelsen ikke kendes på forhånd.
Avatar billede erikjacobsen Ekspert
27. november 2008 - 11:23 #2
Om 1) Læs http://msdn.microsoft.com/en-us/library/aa288453(VS.71).aspx
fra teksten "Declaring them (as shown above) does not actually create the arrays. In C#, arrays are objects (discussed later in this tutorial) and must be instantiated."
Avatar billede kalp Novice
27. november 2008 - 11:41 #3
eller hvis du kender størrelsen som du jo egentlig gør i den kode du viser..

books[] samling = new books[4];

eller blot benytter en List collection.

List<books> samling = new List<books>();
Avatar billede aaberg Nybegynder
27. november 2008 - 11:43 #4
I stedet for at bruge et array, vil jeg anbefale at bruge en List<T>. Dette er en collection, som automatisk vokser når du tilføjer værdier. Et almindeligt array kan ikke vokse.

Her er et eksempel

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Struct
{
    public struct books
    {
        public string f_name;
        public string s_name;
        public string book_name;
        public int year;
        public int page_count;
    }
    class Program
    {
        static void Main()
        {
            List<books> samling = new List<books>();
           
            books myBook = new books();
            myBook.f_name = "H. C.";
            myBook.s_name = "Andersen";
            myBook.book_name = "Den grimme ælling";
            myBook.year = 1900;
            myBook.page_count = 200;
            samling.Add(myBook);

            books anotherBook = new books();
            anotherBook.f_name = "A. P.";
            anotherBook.s_name = "Møller";
            .... osv ....
            samling.Add(anotherBook);

            for (int x = 0; x < samling.Count; x++)
            {
                Console.WriteLine("Book name: {0}\nAuthor:    {1} {2}\nYear:      {3}\nPage count: {4}", samling[x].book_name, samling[x].f_name, samling[x].s_name, samling[x].year, samling[x].page_count);
                Console.WriteLine("\n-------------------------------------------------------------\n");
            }
            Console.ReadKey();
        }
    }
}
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