C# függvény hívása másik osztályból?
Létrehoztam egy osztályt. Ott vannak a műveleteket végző függvények.
Utána ahol használni akarom, ott példányosítottam.
muveletek m=new muveletek();
és megakarom hívni pl a faktoriális számító függvényt
m.fakt(numClicks) és valamiért hibát dob rá. Mi lehet az oka?
Hibaüzenet:"Error 1 A field initializer cannot reference the non-static field, method, or property 'WindowsFormsApplication1.Form1.m' C:\...
"
Nyilvánvalóan valami hiba van a kódodban.
Kód nélkül szerinted megtaláljuk? :)
A műveletek osztály függvényei nem számolnak jól és ez most nem is lényeg. Csak beírtam valamit, hogy meg lehessen hívni egyelőre. De a meghívással vannak gondok.
Elég fura dolgok vannak a kódodban. Egyrészt a String.Format első paramétere egy string kellene hogy legyen, de te egy intet adsz át neki (a muveletek.fakt eredményét)
Másrészt a fakt függvény nem faktoriálist számít, mivel az "eredmény" változó értéke kezdetben 0, így bármivel szorzod 0 marad. Érdekes a gyökvonó algoritmusod is. Egyébként nálam "működik". Mi a pontosabb hiba? Nem fordul le? Légyszi másold ki a teljes hibaüzenetet.
A faktoriális semmi esetre sem adhat 0-t, mivel 1-től indítom a ciklust. De mint említettem nem a függvények működése a lényeg, azokat kijavítom. Csak valami van benne, hogy fusson.
A hibaüzenet pedig ott van a kérdés végén.
Légyszi másold ki a teljes hibaüzenetet. Láttam, hogy ott van az eleje, de ...-tal le van vágva. Szóval mi a vége? A végén van a sorszám és oszlopszám, ahol a hiba van. Az segítene kideríteni a hiba pontos helyét.
(Az pedig mindegy, hogy a for ciklust honnan indítod, mivel azon belül csak szorzod az eredmény változót, aminek a kezdeti értéke 0, hiába szorzod 1-gyel, az nem lesz több mint 0, de ez mindegy)
Error 1 A field initializer cannot reference the non-static field, method, or property 'WindowsFormsApplication1.Form1.m' C:\...\Form1.cs 36 17 WindowsFormsApplication1
A hiba üzenetből csak a hely maradt ki.
(A for-t meg valóban elnéztem, azt hittem egyre van állítva szám is. De ez végül is most lényegtelen.)
label1.Text = m.fakt(numClicks);
vagy label1.Text = m.fakt(numClicks).ToString();
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!