24. august 2014 - 14:29Der er
3 kommentarer og 1 løsning
Brug af enum
Jeg er meget ny i programmering, men skal prøve at forklare det her på bedste måde. Jeg er ved at lave et kortspil og har lavet en enum der hedder Suit og indeholder de 4 "farver": public enum Suit { Hearts, Clubs, Diamonds, Spades }
jeg skal nu lave et nyt kort ud fra klassen Card jeg selv har lavet. Constructeren skal bruge en værdi og en suit. Jeg har et string array "propertys" som fx ser sådan her ud: propertys[0]:12, propertys[1]:Hearts. Jeg har overført de værdier til to variabler: v= 12 (int) col= Hearts (string)
Jeg skriver så:
Card c = new Card(v, col);
Det virker dog ikke... hvad skal jeg gøre for at få lavet den string "Hearts" om til noget jeg kan bruge som Suit?
string btnCard = b.Tag.ToString(); string[] propertys = btnCard.Split(','); int v = Convert.ToInt32(propertys[0]); int col = Convert.ToInt32(propertys[1]); Card c = new Card(v, (Suit)col);
using System; using System.Collections.Generic; using System.Linq;
namespace E { public static class Util { public static T EnumParse<T>(string s) where T : struct { return (T)Enum.Parse(typeof(T), s); } } public enum Suit { Hearts, Clubs, Diamonds, Spades } public class Card { public Suit Suit { get; set; } public int Value { get; set; } public override string ToString() { return Value + " of " + Suit; } } public class CardList { private List<Card> list = new List<Card>(); public void Add(Card card) { list.Add(card); } public override string ToString() { return "(" + String.Join(",", list.ConvertAll(elm => elm.ToString()).ToArray()) +")"; }
} public class Program { public static void Main(string[] args) { CardList list = new CardList(); Console.WriteLine(list); list.Add(new Card { Suit = Suit.Clubs, Value = 8 }); Console.WriteLine(list); list.Add(new Card { Suit = Util.EnumParse<Suit>("Spades"), Value = int.Parse("9") }); Console.WriteLine(list); Console.ReadKey(); } } }
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.