Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Gudafa - 13.03.09 - klo:21.04
-
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#:
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:
/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.
-
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.
static void Main(string[] args)
{
Example e=new Example();
e.firstMethod();
Console.WriteLine(e.myField);
}
Tapa2
static void Main(string[] args)
{
Example e=new Example();
e.NewMain();
}
void NewMain() {
firstMethod();
Console.WriteLine(myField);
}
-
Hmh näinhän tämä menee. Hieman harmi, kun kirja antoi ymmärtää väärin. Kiitos vaivannäöstäsi
-
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ä?
-
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.
-
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.