C# Metody

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

ponik
Level 3.5
Level 3.5
Příspěvky: 677
Registrován: květen 09
Pohlaví: Muž
Stav:
Offline

C# Metody

Příspěvekod ponik » 31 říj 2014 11:34

č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

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C# Metody

Příspěvekod faraon » 31 říj 2014 12:37

Nešla by udělat jako public? V nejhorším případě jako globální.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

ponik
Level 3.5
Level 3.5
Příspěvky: 677
Registrován: květen 09
Pohlaví: Muž
Stav:
Offline

Re: C# Metody

Příspěvekod ponik » 31 říj 2014 12:57

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

Uživatelský avatar
Tomasb98
Level 4
Level 4
Příspěvky: 1012
Registrován: červen 13
Bydliště: Hradec Králové
Pohlaví: Muž
Stav:
Offline

Re: C# Metody

Příspěvekod Tomasb98 » 31 říj 2014 13:49

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...

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C# Metody

Příspěvekod faraon » 31 říj 2014 14:07

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.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: C# Metody

Příspěvekod domitea » 31 říj 2014 15:33

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! ;)

ponik
Level 3.5
Level 3.5
Příspěvky: 677
Registrován: květen 09
Pohlaví: Muž
Stav:
Offline

Re: C# Metody

Příspěvekod ponik » 31 říj 2014 22:05

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.

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: C# Metody

Příspěvekod CZechBoY » 01 lis 2014 01:13

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(...);
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
Tomasb98
Level 4
Level 4
Příspěvky: 1012
Registrován: červen 13
Bydliště: Hradec Králové
Pohlaví: Muž
Stav:
Offline

Re: C# Metody

Příspěvekod Tomasb98 » 01 lis 2014 15:50

Vím no prostě jsme tam napsal blbost. :-(


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů