[ mizob @ 13.06.2004. 16:14 ] @
Svuda pise na su void metode one koje ne vracaju vrednost,e ja to ne razumem ,imam npr metodu

Code:

static void oduzmi(int a,int b,out int c)
        {
            c = a - b;
        }


vraca mi se vrednost c,zar ne?

Pa kako ona one ne vracaju vrednost?
Verovatnoje pitanje vama glupo,ali ja to ne mogu da razumem nikako,a inace sam pocetnik sto se toga tice...
[ mmix @ 13.06.2004. 16:26 ] @
Citat:
Milos Zobenica:Svuda pise na su void metode one koje ne vracaju vrednost,e ja to ne razumem ,imam npr metodu
...
vraca mi se vrednost c,zar ne?
Pa kako ona one ne vracaju vrednost?


Kad se kaže da ne vraća vrednost ne misli se na out parametre nego na povratnu rednost same funkcije (onu koju vraćaš sa return), npr.

Code:

static int oduzmi2(int a,int b)
{
return (a - b);
}


E sad, u čemu je razlika, razlika je u tome da povratnu vrednost funkcije možeš da iskoristiš u izrazima, dok out parametar ne možeš bez privremene promenljive:

npr.
Code:

int x, p=10, q=20, r=30;
x = p * oduzmi2(q, r);


dok bi ovo isto sa oduzmi moralo da bude:
Code:

int x, t, p=10, q=20, r=30;
oduzmi (q, r, out t);
x = p * t;


jel sad jasnije.
[ mizob @ 13.06.2004. 16:53 ] @
Da,jasno mi je sada,hvala.
Sad bas pravim,UCIM,pa sam odlucio da napraivm program za +,-,*,/ ,pa mi izbaci neke greske da mi metode +,-,*,/ nemoaju return value,pa ako mozes da pomognes,i ako mozes

Code:

using System;

namespace Test
{
    class Racunanje
    {
        
        public static int Deljenje(int a, int b, out int c)
        {
            c = a / b;
            Console.WriteLine("Deljenje brojeva {0} i {1} iznosi {2}: ",a ,b ,c);
        }
        
        public static int Mnozenje(int a, int b, out int c)
        {
            c = a * b;
            Console.WriteLine("Mnozenje brojeva {0} i {1} iznosi {2}: ",a ,b ,c);
        }
        
        public static int Sabiranje(int a, int b, out int c)
        {
            c = a + b;
            Console.WriteLine("Sabiranje brojeva {0} i {1} iznosi {2}: ",a ,b ,c);
        }
        
        public static int  Oduzimanje(int a, int b, out int c)
         {
             c = a - b;
             Console.WriteLine("Oduzimanje brojeva {0} i {1} iznosi {2}: ",a ,b ,c);
         }
        
        [STAThread]
        static void Main(string[] args)
        {
            int a,b,c;
            Console.WriteLine("********************************************");
            Console.WriteLine("***************Unesi 2 broja****************");
            Console.WriteLine("********************************************");
            string temp1 = Console.ReadLine();
            string temp2 = Console.ReadLine();
            a = Int32.Parse(temp1);
            b = Int32.Parse(temp2);
            Console.WriteLine("********************");
            Console.WriteLine("*Izaberi operaciju:*");
            Console.WriteLine("*  1. Sabiranje    *");
            Console.WriteLine("*  2. Oduzimanje   *");
            Console.WriteLine("*  3. Mnozenje     *");
            Console.WriteLine("*  4. Deljenje     *");
            Console.WriteLine("********************");
            string op = Console.ReadLine();
            switch(op)
            {
                case "1":
                    Racunanje.Sabiranje(a, b, out c);
                    break;
                case "2":
                    Racunanje.Oduzimanje(a, b, out c);
                    break;
                case "3":
                    Racunanje.Mnozenje(a, b, out c);
                    break;
                case "4":
                    Racunanje.Deljenje(a, b, out c);
                    break;
            }




        }
    }
}


[ mmix @ 13.06.2004. 17:32 ] @
Dobro, razumljivo, ovde dobijaš grešku u svakoj od četiri metode.

To je zato što si metode deklarisao kao public static int, a nigde u telu metode nemaš return.

ili promeni tip metode u public static void ili promeni telo metode:

Code:

public static int Deljenje(int a, int b)
{
   int c = a / b;
   Console.WriteLine("Deljenje brojeva {0} i {1} iznosi {2}: ",a ,b ,c);
   return c;
}

i tako za svaku operaciju.

void je specijalan tip, zapravo nepostojeći tip, i označava da funkcija/metoda ne vraća nikakvu vrednost (izuzimajući out i ref parametre), pa shodno tome kompajler ne zahteva (niti trpi) postojanje return-a.
[ ZokiR @ 14.06.2004. 06:57 ] @
Citat:
mmix: void je specijalan tip, zapravo nepostojeći tip, i označava da funkcija/metoda ne vraća nikakvu vrednost (izuzimajući out i ref parametre), pa shodno tome kompajler ne zahteva (niti trpi) postojanje return-a.
Ne zahteva, ali „trpi” . Izlaz iz void funkcija korišćenjem return-a je sasvim legalan, bar što se kompajlera tiče.
[ mmix @ 14.06.2004. 10:15 ] @
Priznajem ispravku, moja greška, nisam se dobro izrazio misleći na return sa nekom vrednošću, npr return 0; ili return c;