12. november 2007 - 23:39Der er
13 kommentarer og 1 løsning
Return fra Class til form
HEj jeg er ved at lave et ternbing kast igennem en class i program.cs til main form i c#
Program.cs public class Dice { public int result; public void dice() { Random r = new Random(); result = r.Next(0, 4); } public void dice(int sides) { Random r = new Random(); result = r.Next(0, sides); }
}
Form.cs
public partial class Form1 : Form { public Form1() { InitializeComponent(); }
public void dice() { Random r = new Random(); result = r.Next(0, 4); } public void dice(int sides) { Random r = new Random(); result = r.Next(0, sides); }
bør laves som:
private static Random r = new Random(); public void dice() { result = r.Next(0, 4); } public void dice(int sides) { result = r.Next(0, sides); }
Error 1 The name 'result' does not exist in the current context C:\Documents and Settings\XXXX\Dokumenter\Visual Studio 2005\Projects\ADandD\ADandD\Program.cs 25 13 ADandD
Nej, de to stumper kode har intet med hinanden ud over at de begge handler om at slå med en terning og at ordet Dice derfor optræder i begge. (Men ja terninge-kodeeksempler er der jo masse af i de forskellige programerings uddanneler.)
webdesigner, jeg vil nu råde dig til at flytte din Random-instans ud til at være en static variabel i selve Dice-klassen i stedet for at oprette den inde i dice() metoden. Hvis du ikke gør det, vil du opleve nogle "sjove" fænomener når du forsøger at kaste flere terninger (d4'er i det vise kode eksempel) direkte i træk af hinanden.
Jeg vil nu mene, at de to stykker kode bestemt har noget med hinanden at gøre! Trådstarter vil gerne have værdien fra sin terning ud i sin form. Det link der refereres til angiver en af de bedste måder at separere logik fra præsentation.
Et par ekstra linier kode, og det vil være muligt, at bind'e værdien fra terningen til en eller anden custom control.
Men det er sandt, at random-instansen bør være static - ikke kun på grund af optimering, men i høj grad også fordi slagene faktisk ikke vil blive "rigtig" random.
/B :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.