Hledáš dárek, který neskončí v koši? Nyní 90 % extra kreditů ZDARMA s promo kódem PREKVAPENI90. Zjisti více:
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 1 - Úvod do C# a .NET Frameworku

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
Odpovídá na jakoubek.stanislav
Libor Šimo (libcosenior):8.12.2016 12:46

double pikrat(), r, o;
To pikrat() zmaz.

Odpovědět
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
jakoubek.stanislav:8.12.2016 12:53

Smazal jsem, ale pořád to nechodí. Tentokráte na mě řve na řádku

o = 2*pikrat(r);

"An object reference is required for the non-static field, method od property". Takže tu deklaraci asi dopředu chce.

Avatar
Erik Šťastný:8.12.2016 13:09

Řešení je nejspíš víc, to co říkáš ty určitě ne, deklarace metody fakt ne :)

V tvém případě bych asi napsal

static double pikrat(double x)

Main je statická metoda a nemůžeš z ní volat nestatickou bez vytvoření instance :)

Editováno
Avatar
Miskyns
Člen
Avatar
Odpovídá na jakoubek.stanislav
Miskyns:13.12.2016 21:32

I když Elisse na tuhle chybu odpověděl, tak se chci zeptat zda by nešlo v mainu přidat

Program p = new Program();

a poté na řádku, kde je

o = 2*pikrat(r);

přepsat na

o = 2*p.pikrat(r);

Byl bych rád, kdyby jste mi napsali, jestli se to takhle dá řešit, díky :)

Odpovědět
Proč se to učit, když můžeš použít GOOGLE...
Avatar
krepsy3
Tvůrce
Avatar
Odpovídá na Miskyns
krepsy3:13.12.2016 21:49

Tyjo, tak tenhle dotaz mě celkem zaskočil. Působí to totiž docela nepřirozeně (alespoň na mě). Řekl jsem si ale, že to nejspíš půjde, protože proč by ne, je to naprosto logické, ale raději jsem to otestoval. A nemýlil jsem se, funguje to. Použitý kód, který tedy mi VS normálně vzalo:

class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine((new Program()).pikrat(2));
        Console.ReadKey();
    }

    private double pikrat (double x)
    {
        return x * Math.PI;
    }
}
Editováno
Odpovědět
Programátor je stroj k převodu kávy na kód.
Avatar
Miskyns
Člen
Avatar
Odpovídá na krepsy3
Miskyns:14.12.2016 16:49

Přece jenom využívání statiky není dobré, a vždy to lze nějak obejít :)

Odpovědět
Proč se to učit, když můžeš použít GOOGLE...
Avatar
Odpovídá na Miskyns
Erik Šťastný:14.12.2016 16:56

Osobně mi to přijde lepší než vytvářet třídu, která obsahuje jednu metodu a žádné proměnné :-O

Avatar
Miskyns
Člen
Avatar
Odpovídá na Erik Šťastný
Miskyns:14.12.2016 16:59

Každý má jiný vkus, ale konečný výsledek u mě by vypadal takto:

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Vytvoření instance třídy
            Program() p = new Program();
            double r, o;

            Console.WriteLine("Zadej polomer : ");
            r = double.Parse(Console.ReadLine());
            //Zavolání metody v této třídě
            o = 2*p.pikrat(r);
            Console.WriteLine("Obvod kruhu je: {0}",o);
            Console.ReadKey();

         }

        double pikrat(double x)
        {
            return (x * 3.14);
        }

    }
}
Odpovědět
Proč se to učit, když můžeš použít GOOGLE...
Avatar
Odpovídá na Miskyns
Erik Šťastný:14.12.2016 17:02

Mně přijde hodně divná ta instance z třídy, která obsahuje Main (alespoň v tomhle případě). To je to co mně trápí, jinak proti instancování třídy na metodu nic nemám.

Editováno
Nejnovější komentáře jsou na konci poslední stránky.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 144.