Avatar billede Droa Seniormester
29. september 2009 - 21:01 Der er 11 kommentarer og
1 løsning

hente en array fra en object variabel?

Okay dette er et rimlig dumt spørgsmål, men jeg er gået helt kold i dette problem..

jeg har et


public object GetCard(int)

return new object {int,string,string,bool}


som jeg henter igennem en lang række objecter.. den ender os som den skal, i mit main loop, med

object test = CD.GetCard(1)

som jeg kan se med breakpoint laver mig et fint object, med mine data i

-        test    {object[4]}    object {object[]}
        [0]    2    object {int}
        [1]    "To"    object {string}
        [2]    "Hjerter"    object {string}
        [3]    false    object {bool}


men hvordan kan jeg med test objectet, lave dem om igen til læsligt?

jeg har det lige på tungen, men kan bare ikke komme rundt om det
Avatar billede arne_v Ekspert
29. september 2009 - 21:11 #1
Du kan caste det til object[] og saa caste de enkelte elementer til int/string/string/bool.

Eller bedre: lade den metode returnere en struct eller class med nogle relevante properties.
Avatar billede Droa Seniormester
29. september 2009 - 21:22 #2
har ingen ide hvordan man gør nogen af delene, og jg kan jo se dem at de er der, helt finde og klare.. er bare underligt man så ikke kan trække dem ud
Avatar billede arne_v Ekspert
29. september 2009 - 21:28 #3
object test = ...;
object[] test2 = (object[]) test;
int test2_1 = (int)test2[0];
...
Avatar billede arne_v Ekspert
29. september 2009 - 21:28 #4
men som sagt skal det gribes anderledes an !
Avatar billede Droa Seniormester
29. september 2009 - 21:31 #5
kan du give et eksempel da?
Avatar billede arne_v Ekspert
29. september 2009 - 22:07 #6
Ja.

Senere.
Avatar billede arne_v Ekspert
30. september 2009 - 02:00 #7
using System;

namespace E
{
    public class Data
    {
        public int Iv { get; set; }
        public double Xv { get; set; }
        public string Sv { get; set; }
        public bool Bv { get; set; }
    }
    public class Program
    {
        public static object M1()
        {
            return new object[] { 123, 123.456, "ABC", true };
        }
        public static Data M2()
        {
            return new Data { Iv=123, Xv=123.456, Sv="ABC", Bv=true };
        }
        public static void Main(string[] args)
        {
            // den forkerte måde
            object res1 = M1();
            object[] res1a = (object[])res1;
            int res1a0 = (int)res1a[0];
            double res1a1 = (double)res1a[1];
            string res1a2 = (string)res1a[2];
            bool res1a3 = (bool)res1a[3];
            Console.WriteLine(res1a0 + " " + res1a1 + " " + res1a2 + " " + res1a3);
            // den rigtige måde
            Data res2 = M2();
            Console.WriteLine(res2.Iv + " " + res2.Xv + " " + res2.Sv + " " + res2.Bv);
            Console.ReadKey();
        }
    }
}
Avatar billede Droa Seniormester
30. september 2009 - 07:48 #8
du er en gud arne_v, ligger du et svar? :)
Avatar billede Droa Seniormester
30. september 2009 - 09:02 #9
vis jeg nu gerne vil sende mit Data object igennem en Metode, kan man så det?

        public CardData GetCardFromDeck(int i)
        {
            return new CardData { arCard[i].GetCard() };
        }

virker ikke rigtigt
Avatar billede Droa Seniormester
30. september 2009 - 09:18 #10
hov, det skulle os være

  public CardData GetCardFromDeck(int i)
        {
            return arCard[i].GetCard();
        }
Avatar billede arne_v Ekspert
30. september 2009 - 13:14 #11
Hvis arCard er et Card[] boer du kunne:

        public CardData GetCardFromDeck(int i)
        {
            return arCard[i];
        }
Avatar billede arne_v Ekspert
30. september 2009 - 13:14 #12
Og et svar
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