मैंने आसान "साँप" खेल के लिए एक कक्षा में enum 'दिशा' नामक एक बनाया है। लेकिन मुझे नहीं पता कि इस वर्ग से मूल्यों को मुख्य रूप में कैसे पास किया जाए ...

मैंने क्या प्रयास किया?

1) मैंने कक्षा और रूप में समान एनम बनाने की कोशिश की, लेकिन एक रूपांतरण समस्या थी (Argument1: 'Project.Form1.direction' से < में कनवर्ट नहीं किया जा सकता उन्हें>'कक्षा.दिशा'

2) मैंने इसे पास करने वाले पैरामीटर के साथ करने की कोशिश की, लेकिन मैं असफल रहा।

फिर मैंने कुछ बेवकूफी भरी बातें करने की कोशिश की, जिनका मैं यहाँ उल्लेख नहीं कर सकता।

मैं एक घोषणा पत्र भी संलग्न कर रहा हूं, शायद यह आपकी मदद करेगा।

//Declaration in the main form is the same as the declaration in the class. 

public enum direction { stop, up, down, left, right };

//Each part of enum is for the direction of the snake.
2
Sendys 15 पद 2017, 20:55
1
आप कक्षा में enum बना सकते हैं और उस enum के लिए public direction directions{get;} जैसे मुख्य रूप में संपत्ति बना सकते हैं
 – 
mmushtaq
15 पद 2017, 21:01

2 जवाब

आपको केवल एक बार एनम को परिभाषित करने की आवश्यकता है। यदि आप सांप नामक सार्वजनिक वर्ग में अपना एनम घोषित करते हैं, तो इस तरह:

    public class Snake
    {
        public enum direction { stop, up, down, left, right };

        //rest of class
    }

आप Snake.direction प्रकार का उपयोग करके स्नेक वर्ग के बाहर एनम का उपयोग कर सकते हैं

संपादित करें

या आप किसी भी वर्ग के बाहर अपना एनम घोषित कर सकते हैं।

    public class Snake
    {
        //class
    }

    public enum direction { stop, up, down, left, right };

तब आप केवल direction का उपयोग एनम तक पहुंचने के लिए कर सकते हैं

1
Ben J 15 पद 2017, 21:30

आमतौर पर किसी नामस्थान में सीधे enum परिभाषित करना सबसे अच्छा होता है ताकि नाम स्थान के सभी वर्ग समान सुविधा के साथ इसे एक्सेस कर सकें। हालाँकि, एक एनम को एक वर्ग या संरचना के भीतर भी नेस्ट किया जा सकता है। यहाँ पहले दृष्टिकोण का सरल उदाहरण, HTH

Direction.cs enum Direction को परिभाषित करता है

namespace Snake.Game.Enums
{
    public enum Direction
    {
        Up,
        Down,
        Left,
        Right
    };
}

फ़ाइल SnakeGame.cs उस वर्ग को परिभाषित करती है जिसमें Direction प्रकार की संपत्ति होती है

using Snake.Game.Enums;

namespace Snake.Game.Classes
{
    public class SnakeGame
    {
        public Direction Direction { get; set; }
    }
}

SnakeGameForm.cs फॉर्म को परिभाषित करता है और कंस्ट्रक्टर में यह टाइप SnakeGame का इंस्टेंस बन जाता है और इसलिए फॉर्म हर बार जानता है कि Direction कैसा है।

using System.Windows.Forms;
using Snake.Game.Classes;

namespace Snake.Game.Forms
{
    public partial class SnakeGameForm : Form
    {
        private readonly SnakeGame _game;

        public SnakeGameForm(SnakeGame game)
        {
            InitializeComponent();
            _game = game;
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            MessageBox.Show($"Direction of snake is '{ _game.Direction}'.");
        }
    }
}
0
dee 15 पद 2017, 23:40