Kirjoittaja Aihe: [RATKAISTU] Mono ei hyväksy C#:n luokka tason muuttujia?  (Luettu 2111 kertaa)

Gudafa

  • Käyttäjä
  • Viestejä: 7
    • Profiili
Otsikko kertonee paljon. On pakko kysyä, kun en löytänyt vastausta. Siis tämä on jotenkin kummaa...
Tässä on koodi, jonka otin suoraan kirjasta, jota käytän (tosin lisäsin Main() metodin), kielenä C#:

Koodia: [Valitse]
using System;

class Example
{
static void Main(string[] args)
{
firstMethod();
Console.WriteLine(myField);
}

void firstMethod()
{
myField = 42;
}

void anotherMethod()
{
myField = 42;
}

int myField = 0;
}

Tuonhan pitäisi toimia. Ongelmat ovat seuraavat:

Koodia: [Valitse]
/home/rufi/Ohjelmointi/C#/Ch3.1/Main.cs(12,17): error CS0120: `Example.firstMethod()': An object reference is required for the nonstatic field, method or property
/home/rufi/Ohjelmointi/C#/Ch3.1/Main.cs(12,17): error CS0119: Expression denotes a `value', where a `method group' was expected
/home/rufi/Ohjelmointi/C#/Ch3.1/Main.cs(13,35): error CS0120: `Example.myField': An object reference is required for the nonstatic field, method or property

Elii objektiviite tarvitaan ei-staattiselle fieldille(= luokkatason muuttuja, eikös?).
Mikäs jippo tässä sitten onkaan?

PS:
Jos joku ihmettelee miksi käytän C#, niin aloittelin sitä jo Windows puolella, kun se näyttää helpommalta kuin C++. Käytän tätä jonkin aikaa (varmaankin yhdessä Windowsin puolella tuon XNA kirjaston kanssa) ja siirryn sitten C++ ja/tai Javaan.
« Viimeksi muokattu: 13.03.09 - klo:22.05 kirjoittanut Gudafa »

peran

  • Vieras
Vs: Mono ei hyväksy C#:n luokka tason muuttujia?
« Vastaus #1 : 13.03.09 - klo:21.52 »
Ei tuota pidäkään hyväksyä. Staattisesta metodista kutsua ei staattisia osia.

Jos joku Windblows sattuu hyväksymään ton, niin sillä menee p*rseelleen.

En ole vähään aikaan ohjelmoinut C#:llä, joten muistissa saattaa reistailla, mutta jotenkin näin.
Koodia: [Valitse]
        static void Main(string[] args)
        {
                Example e=new Example();
                e.firstMethod();
                Console.WriteLine(e.myField);
        }


Tapa2
Koodia: [Valitse]
        static void Main(string[] args)
        {
                Example e=new Example();
                e.NewMain();
        }

       void NewMain() {
                firstMethod();
                Console.WriteLine(myField);
      }

« Viimeksi muokattu: 13.03.09 - klo:22.02 kirjoittanut peran »

Gudafa

  • Käyttäjä
  • Viestejä: 7
    • Profiili
Vs: [RATKAISTU] Mono ei hyväksy C#:n luokka tason muuttujia?
« Vastaus #2 : 13.03.09 - klo:22.07 »
Hmh näinhän tämä menee. Hieman harmi, kun kirja antoi ymmärtää väärin. Kiitos vaivannäöstäsi

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: [RATKAISTU] Mono ei hyväksy C#:n luokka tason muuttujia?
« Vastaus #3 : 15.03.09 - klo:17.44 »
Hmh näinhän tämä menee. Hieman harmi, kun kirja antoi ymmärtää väärin. Kiitos vaivannäöstäsi

Jos kirjassa on tuollaisia perustason virheitä niin suosittelen vaihtamaan kirjaa.

Mikä kirja muuten on kyseessä?

Gudafa

  • Käyttäjä
  • Viestejä: 7
    • Profiili
Vs: [RATKAISTU] Mono ei hyväksy C#:n luokka tason muuttujia?
« Vastaus #4 : 17.03.09 - klo:17.03 »
Ilmaisin ehkäpä asian väärin, nimittäin en ole vielä edes luokissa kyseisessä kirjassa (aloitin alusta pitkän ajan jälkeen: M$ Visual C# 2005) eikä esimerkki ollut ajokelpoinen niin ymmärsin asian väärin.
Muuten mitenkä nuo osat olivat sitten staattisia ilman static avainsanaa? Vaikuttiko se, että luokka sisälsi Main() metodin vai jotain? Anteeksi tälläinen tyhmyys, mutta juuri tämä static tuotti hieman hankaluuksia ennen.

peran

  • Vieras
Vs: [RATKAISTU] Mono ei hyväksy C#:n luokka tason muuttujia?
« Vastaus #5 : 17.03.09 - klo:21.36 »
Ilmaisin ehkäpä asian väärin, nimittäin en ole vielä edes luokissa kyseisessä kirjassa (aloitin alusta pitkän ajan jälkeen: M$ Visual C# 2005) eikä esimerkki ollut ajokelpoinen niin ymmärsin asian väärin.
Muuten mitenkä nuo osat olivat sitten staattisia ilman static avainsanaa? Vaikuttiko se, että luokka sisälsi Main() metodin vai jotain? Anteeksi tälläinen tyhmyys, mutta juuri tämä static tuotti hieman hankaluuksia ennen.

Olihan siinä mainissä static.