Avatar billede anders159 Nybegynder
20. oktober 2005 - 11:03 Der er 10 kommentarer og
1 løsning

Object håndtering byRe f- byVal

Har dette lille problem med en 3-parts komponent jeg bruger i et lille projekt. laver lige 2 små eks. på mit problem.

--------------------------------------
ObjX obj1 = new ObjX();

obj1 = getObjX();

private ObjX getObjX()
  {
  ObjX obj2 = new ObjX();
  obj2.name = "anders"
  return obj2
  }

Dette virker ikke --> obj1.name = ""
-----------------------------------------------------

ObjX obj1 = new ObjX();

getObjX(obj1);

private void getObjX(Objx obj2)
  {
  obj2.name = "anders"
  }
Dette virker. --> obj1.name = "anders"
-----------------------------------------------

nogen der kan forklare hvad der sker og hvad den rigtigt måde er at løse sådanne problemstillinger i .NET.
Avatar billede arne_v Ekspert
20. oktober 2005 - 11:10 #1
er du sikker på at den første kode ikke virker ?

umiddelbart synes jeg nemlig at den burde virke !
Avatar billede arne_v Ekspert
20. oktober 2005 - 11:13 #2
using System;

namespace E
{
    public class ObjX
    {
        public string name = "";
    }
    public class MainClass
    {
        private static ObjX getObjX()
        {
            ObjX obj2 = new ObjX();
            obj2.name = "anders";
            return obj2;
        }
        public static void Main(string[] args)
        {
            ObjX obj1 = new ObjX();
            obj1 = getObjX();
            Console.WriteLine(obj1.name);
        }
    }
}

virker fint hos mig
Avatar billede anders159 Nybegynder
20. oktober 2005 - 13:18 #3
synes også det burde virke...men desværre vil det ikke, prøver at kigge det igennem igen.

kan static have noget at gøre med det?? Det har jeg ikke i min metode?
Avatar billede arne_v Ekspert
20. oktober 2005 - 13:22 #4
nix
Avatar billede arne_v Ekspert
20. oktober 2005 - 13:22 #5
using System;

namespace E
{
    public class ObjX
    {
        public string name = "";
    }
    public class MainClass
    {
        private ObjX getObjX()
        {
            ObjX obj2 = new ObjX();
            obj2.name = "anders";
            return obj2;
        }
        public void Test()
        {
            ObjX obj1 = new ObjX();
            obj1 = getObjX();
            Console.WriteLine(obj1.name);
        }
        public static void Main(string[] args)
        {
            MainClass mc = new MainClass();
            mc.Test();
        }
    }
}
Avatar billede anders159 Nybegynder
20. oktober 2005 - 15:28 #6
det var da ufatteligt, kan stadig ikke lige få det til at virke.
men smid et svar så kommer der lidt tilbage ;)
Avatar billede arne_v Ekspert
20. oktober 2005 - 15:33 #7
svar
Avatar billede arne_v Ekspert
20. oktober 2005 - 15:33 #8
jeg tror at du skal kigge lidt bredere

har du mulighed for at poste hele koden ?
Avatar billede anders159 Nybegynder
20. oktober 2005 - 15:51 #9
ikke på nuværende tidspunkt, da det hele er total protyping, men hvis jeg ikke får løst problem kommer jeg lige tilbage:)

i øjeblikket har jeg et object der kan tage en SqlDataReader om agument, og jeg prøver at retunere en Reader til dette object.

altså

obj.data = getReader(); og det virker ikke.

men hvis jeg sender objectet med og tilføjer readeren i metoden virker det
getReader(obj);

men prøver lige at kigge på det en ekstra gang.

endnu engagn tak for hjælpen
Avatar billede Syska Mester
21. oktober 2005 - 07:52 #10
Synes også jeg engang havde problemer med at smide sqldatareader frem og tilbage... altså hvis du fylder det i en metoder og returnere det inden, du har læst dataen, så mener jeg ikke det virker...

Men det kan arne sikkert lave et eksemple med hvis det er det du prøvet på...

// ouT
Avatar billede arne_v Ekspert
21. oktober 2005 - 14:42 #11
man burde godt kunne returnere et DataReader objekt hvis man husker
at holde Connection åben og ikke bruger Connection til noget andet
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