Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 1. diel - Úvod do C# a .NET Frameworku

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá na jakoubek.stanislav
Libor Šimo (libcosenior):8.12.2016 12:46

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

Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovedá 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 :)

Editované
Avatar
Miskyns
Člen
Avatar
Odpovedá 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 :)

Odpovedať
Proč se to učit, když můžeš použít GOOGLE...
Avatar
krepsy3
Tvůrce
Avatar
Odpovedá 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;
    }
}
Editované
Odpovedať
Programátor je stroj k převodu kávy na kód.
Avatar
Miskyns
Člen
Avatar
Odpovedá 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 :)

Odpovedať
Proč se to učit, když můžeš použít GOOGLE...
Avatar
Odpovedá 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
Odpovedá 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);
        }

    }
}
Odpovedať
Proč se to učit, když můžeš použít GOOGLE...
Avatar
Odpovedá 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.

Editované
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 144.