Avatar billede gregersp Nybegynder
03. marts 2005 - 13:24 Der er 6 kommentarer og
1 løsning

En hel række i multidimensionalt array

Hey.

Nu har jeg søgt højt og lavt for at finde ud af hvordan jeg kan referere til en hel række i et multidimensinalt array, og nej jeg har ikke mulighed for at benytte jagged arrays :(

Altså det jeg gerne vil er:
funktion_på_et_1D_array( fMitArray[ index, {alt i denne række} ])

Nogen gode bud - eller er jeg nødt til at løbe rækken igennem, kopiere det over i et 1D-array og så give det til funktionen (meget uhandy vil jeg mene).
Avatar billede Syska Mester
03. marts 2005 - 13:36 #1
#region Using directives

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

#endregion

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList sublist = new ArrayList();

            sublist.Add("test1");
            sublist.Add("test2");
            sublist.Add("test3");
            sublist.Add("test4");

            ArrayList mainlist = new ArrayList();

            mainlist.Add(sublist);
            mainlist.Add(sublist);
            mainlist.Add(sublist);

            udskriv((ArrayList)mainlist[0]);

            Console.ReadLine();
        }

        private static void udskriv(ArrayList denherliste) {
            foreach (string i in denherliste) {
                Console.WriteLine(i.ToString());
            }
        }
    }
}

Sådan noget?
Avatar billede Syska Mester
03. marts 2005 - 13:37 #2
Nu er det selvf samme array jeg adder, men tror det er sådan noget du søger hvis jeg har fattet hvad du mener....
Avatar billede gregersp Nybegynder
03. marts 2005 - 13:42 #3
Hvis det bare var så vel, jeg har desværre ikke en ArrayList, men et alm. multidimensionalt array:

f.eks.:
float[,] fMitArray ....

Det gives til min klasse af en anden klasse, der desværre ikke er til at ændre.
Avatar billede arne_v Ekspert
03. marts 2005 - 13:55 #4
Så vidt jeg ved må du enten kopiere data til et 1 dimensionelt array eller
skifte til unsafe kode.
Avatar billede arne_v Ekspert
03. marts 2005 - 13:55 #5
Eksempel på det sidste:

using System;

namespace E7
{
    class MainClass
    {
        public unsafe static void Test(int *a)
        {
                for(int col = 0; col < 3;col++)
                {
                    Console.Write(" " + a[col]);
                }
                Console.WriteLine();
        }
        public static void Main(string[] args)
        {
            int[,] a = new int[2,3];
            for(int row = 0; row < 2; row++)
            {
                for(int col = 0; col < 3;col++)
                {
                    a[row,col] = (row + 1) * (col + 1);
                }
            }
            for(int row = 0; row < 2; row++)
            {
                for(int col = 0; col < 3;col++)
                {
                    Console.Write(" " + a[row,col]);
                }
                Console.WriteLine();
            }
            unsafe {
                fixed(int *p = &a[0,0]) Test(p);
            }
        }
    }
}
Avatar billede gregersp Nybegynder
03. marts 2005 - 13:57 #6
Hmm, ærgerligt.

Så må jeg jo kigge på at kopiere over i et 1D-array.
Jeg er ikke så vild med unsafe kode...
Avatar billede gregersp Nybegynder
10. marts 2005 - 15:26 #7
lukket
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