Stránka 1 z 1

C# Metody

Napsal: 31 říj 2014 11:34
od ponik
čau,

začínám s C# a narazil jsem na tenhle problém.
Metodou RndList by mi měla vzniknout proměnná "list" kterou by následně metoda WriteList měla vypsat. Jenže pokud proměnnou "list" použiju jako parametr pro metodu WriteList tak mi vyskočí chyba že "list" neexistuje.
Jak dosáhnu toho abych mohl zmíněnou proměnnou používat i mimo metodu?

Kód: Vybrat vše

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            RndList(10);
            WriteList(list);
            Console.ReadLine();
        }
        static private void RndList (int x)
        {
            List<int> list = new List<int>();
            Random rnd = new Random ();
            for (int i = 0 ; i < x;)
            {
                list.Add(rnd.Next(99));
                i++;
            }
        }
        static private void WriteList(List<int> L)
        {
            for (int i = 0; i < L.Count; )
            {
                Console.Write("#" + L[i] + " ");
                i++;
            }
        }
    }
}



Dík

Re: C# Metody

Napsal: 31 říj 2014 12:37
od faraon
Nešla by udělat jako public? V nejhorším případě jako globální.

Re: C# Metody

Napsal: 31 říj 2014 12:57
od ponik
změna na pubic ani na global nepomohla.

před tebou tu nekdo psal (pak to smazal, netušim proč) že bych měl proměnnou deklarovat mimo metodu. Podle toho jsem se dostal k tomuhle.

Kód: Vybrat vše

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine ("set list count");
            int count = int.Parse(Console.ReadLine());
            List<int> list1 = new List<int>();
            RndList(list1,count);
            WriteList(list1);
            Console.ReadLine();
        }
        static private void RndList (List<int> L , int x)
        {
            Random rnd = new Random ((int) DateTime.Now.Ticks);
            for (int i = 0 ; i < x;)
            {
                L.Add(rnd.Next(99));
                i++;
            }
        }
        static private void WriteList(List<int> L)
        {
            for (int i = 0; i < L.Count; )
            {
                Console.Write("#" + L[i] + " ");
                i++;
            }
            Console.WriteLine(" ");
        }
    }
}


ale to pořád nění to co bych chtěl. Múj cíl byl metoda která vytvoří proměnnou se kterou bych pak mohl dál pracovat (jestli to teda je možný)

dík

Re: C# Metody

Napsal: 31 říj 2014 13:49
od Tomasb98
Smazal jsme to protože když jsem to zkoušel tak mi to nefungovalo. Jak nedělám konsolové aplikace tak jsme ten list deklaroval úplně mimo...

Re: C# Metody

Napsal: 31 říj 2014 14:07
od faraon
ponik píše:Múj cíl byl metoda která vytvoří proměnnou se kterou bych pak mohl dál pracovat


Vytvořit tu proměnnou mimo metodu je to co jsem ti psal také, platnou buď v celé třídě nebo v celém programu.

A co kdyby ta metoda tu proměnnou vracela? Nevím jestli to zrovna v C# jde, ale něco takového:

Kód: Vybrat vše

List<int> vytvorit(...)
          {
          ...
          return list;
          }

seznam=vytvorit();

Ale musel by sis asi nejdřív deklarovat vlastní typ List, aspoň v Céčku bych postupoval takhle.

Re: C# Metody

Napsal: 31 říj 2014 15:33
od domitea
Doplním Faraona:

Kód: Vybrat vše

static private List<int> RndList (int x)
        {
            List<int> list = new List<int>();
            Random rnd = new Random ();
            for (int i = 0 ; i < x;)
            {
                list.Add(rnd.Next(99));
                i++;
            }
            return list;
        }





Pak je ještě řešení nedeklarovat ten List v metodě, ale ve třídě. Proč? List deklarovaný v metodě existuje pouze a jen v rámci dané metody! ;)

Re: C# Metody

Napsal: 31 říj 2014 22:05
od ponik
Takže když to tak shrnu tak deklarovat proměnnou v metodě není dobrej nápad. Zůstanu u varianty deklarace proměnné mimo metodu, pro moje účely to stejnak asi bude ideální řešení. Škoda že mě to nenapadlo dřív.

Aspoň zase vím něco novýho, děkuji všem za příspěvky.

Re: C# Metody

Napsal: 01 lis 2014 01:13
od CZechBoY
Jakej je sakra rozdíl mezi konzolovým C# a oknovým C#?!

btw. když pracuješ s jednim objektem furt dokola tak udělej z těch funkcí metody toho objektu...

Kód: Vybrat vše

MyList list = new MyList(...);
list.Rnd(...);
list.Write(...);

Re: C# Metody

Napsal: 01 lis 2014 15:50
od Tomasb98
Vím no prostě jsme tam napsal blbost. :-(