Προς το περιεχόμενο

c# global object


Haros

Προτεινόμενες αναρτήσεις

Δημοσ.

Με ποιόν τρόπο στην c# μπορεί να δηλωθεί ένα αντικείμενο που δημιουργείτε μέσα σε μια function global ώστε να μπορεί να το χρησιμοποιήσει μια άλλη function;

 

π.χ

να δημιουργηθεί σε μια function το αντικείμενο foo, και μετά σε μια άλλη function να γίνει χρήση της foo.faa();

 

Ευχαριστώ.

Δημοσ.

Για ποιο λογο η δευτερη function η οποια χρειαζεται το object να μην το παίρνει σαν argument ?

 

>
void doSomethingWithBar(ref Bar bar) {
   // Do something with bar
}

Δημοσ.
Για ποιο λογο η δευτερη function η οποια χρειαζεται το object να μην το παίρνει σαν argument ?

 

Γιατί θέλει να κρατιέται η μεταβλητή και όταν βγεί εκτος της συνάρτησης.

 

Δεν υπάρχουν Global μεταβλητές στη C#

υπάρχουν όμως μεταβλητές κλάσης με access specifiers

 

Εδιτ

Ρίξε μια ματιά εδώ

Δημοσ.

κατι τετοιο?

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

using System.Reflection;
namespace cs22
{
   class Program
   {
       static void Main(string[] args)
       {
           var obj = new { age = 209, name = "Mitsotakis" };
           useObj(obj);
           Console.Read();
           
       }
       static void useObj(object obj)
       {
           var t = obj.GetType();
           var ps = t.GetProperties();
           foreach (var p in ps)
           {
               Console.WriteLine(p.Name+" = "+p.GetValue(obj,null));
           }
       }
   }
}

 

Φτιαχνω ενα χ object σε μια συναρτηση και το χρησιμοποιω σε μι αλλη.

Δημοσ.
Για ποιο λογο η δευτερη function η οποια χρειαζεται το object να μην το παίρνει σαν argument ?

 

>
void doSomethingWithBar(ref Bar bar) {
   // Do something with bar
}

 

Απ'οσο ξέρω για να κάνω reference μια μεταβλητή σε μια function πρέπει πρώτα να καλέσω την function για να της το περάσω ( func(ref val) ). Δεν θέλω όμως κάτι τέτοιο. Θέλω απλά όποτε την καλώ να μπορεί να χρησιμοποιήσει το αντικείμενο.

 

Επίσης ok άμα έχω +1 function, αλλά άμα θέλω να το δώσω σε όλες της functions του προγράμματός μου δεν είναι βολικό...

 

---------- Το μήνυμα προστέθηκε στις 18:32 ----------

 

Για να μη σας μπερδεύω (και παιδεύω).

Υπάρχει κάποιος κώδικας που εκτελείται με το πάτημα ενός κουμπιού. Αυτός ο κώδικας δημιουργεί ένα αντικείμενο.

 

> private void Button1_Click(object sender, EventArgs e)
       {
           Foo obj = new Foo();
           //mplamplampla kwdikas pou ektokseuei pyrinikes kefales
       }

 

και τώρα υπάρχει ένα άλλο κουμπί που πρέπει να καλέσει μια μέθοδο του αντικειμένου που δημιουργήσαμε

 

> private void Button2_Click(object sender, EventArgs e)
       {
           obj.Method();
           //mplamplampla kwdikas poy katastrefei planhtes
       }

Δημοσ.

1)

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

using System.Reflection;
namespace cs22
{
   class Program
   {
       static void Main(string[] args)
       {
           Κοκκινοσκουφιτσα kok = new Κοκκινοσκουφιτσα();
           kok.ΟτιΝαναι();
           kok.ΟτιΝαναι1();
           Console.Read();
           
       }
      
   }
   class Κοκκινοσκουφιτσα
   {
       object obj;
       public void ΟτιΝαναι()
       {
           obj = "Στρινg";
       }
       public void ΟτιΝαναι1()
       {
           if (obj != null)
           {
               if (obj is string)
               {
                   Console.WriteLine(obj.ToString());
               }
           }
       }
   }
}

2)

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

using System.Reflection;
namespace cs22
{
   class Program
   {
       static void Main(string[] args)
       {
           Κοκκινοσκουφιτσα kok = new Κοκκινοσκουφιτσα();
           kok.ΟτιΝαναι();
           kok.ΟτιΝαναι1();
           Console.Read();
           
       }
      
   }
   class StaticObjects
   {
       public static object Obj1;
       public static object Obj2;
   }
   class Κοκκινοσκουφιτσα
   {
       object obj;
       public void ΟτιΝαναι()
       {
           StaticObjects.Obj1 = "tanga";
       }
       public void ΟτιΝαναι1()
       {
           if (StaticObjects.Obj1 != null)
           {
               if (StaticObjects.Obj1 is string)
               {
                   Console.WriteLine(StaticObjects.Obj1.ToString());
               }
           }
       }
   }
}

Δημοσ.

χμμ δεν νομίζω πως μπορεί να βοηθήσει αυτό.

 

Θα ήθελα το αντικείμενο της Κοκκινοσκουφίτσας μέσα στη function Giagia

 

>static void Giagia(string[] args)
       {
           Κοκκινοσκουφιτσα kok = new Κοκκινοσκουφιτσα();
           kok.ΟτιΝαναι();
           kok.ΟτιΝαναι1();
           Console.Read();
           
       }

 

να μπορεί να το χρησιμοποιήσει και ο λύκος μαζί με τις μεθόδους του (του αντικειμένου όχι του λύκου :P ).

 

>static void Lykos(string[] args)
       {
           kok.ΟτιΝαναι();
           kok.ΟτιΝαναι1(); 
       }

 

Ο κώδικας της κλάσης της Κοκκινοσκουφίτσας νομίζω μας είναι αδιάφορος. Θα μπορούσε κάλλιστα να είναι κάποια έτοιμη κλάση της c#...

Δημοσ.

Οπως λεει παραπάνω και ο ευγένιος, αν το button1 και button2 είναι μέθοδοι τις ίδιας κλάσης, γιατι δεν βάζεις το αντικέιμενο Foo σαν member της κλάσης?

 

Επίσης τι σχέση έχει το singleton pattern με όλα αυτά?

Δημοσ.

ποστ 7

>namespace cs22
{
   class Program
   {
       static void Main(string[] args)
       {
           {
               StaticObjects.Obj1 = "string";
           }
           {
               Console.WriteLine(StaticObjects.Obj1);
           }
           Console.Read();
       }
      
   }
   sealed class StaticObjects
   {
       public static object Obj1;

   }
  
}

Δημοσ.

άκυρο το Singleton pattern απλά ψαχνόμουν εκείνη την ώρα στο google και το έβλεπα.

 

τελικά οκ βρήκα άκρη. Με λίγη βοήθεια από τους κώδικες του Ευγένιου :P

 

Σας ευχαριστώ όλους για την βοήθεια :)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...