Как нажать на массив C #, когда массив находится в родительском классе? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь выдвинуть сгенерированные мной строковые значения в массив, который находится в родительском классе.Я пытаюсь сделать простую колоду карт, чтобы потом выстроить методы вокруг рисования карт и тасования.

Это первый C #, который я написал, у меня больше опыта с JS, и JS позволил бы мне просто перенести значение в коллекцию родителей.

Я пытался вставить значение в блок кода значения foreach, но это не работает.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{

    public enum Suit
    {
        Clubs,
        Diamonds, 
        Hearts, 
        Spades
    }

    public enum value
    {
        Ace, 
        Two, 
        Three, 
        Four,
        Five, 
        Six, 
        Seven, 
        Eight, 
        Nine, 
        Ten, 
        Jack, 
        Queen, 
        King, 
    }
    class Deck
    {
        //Array to store deck strings. 
        private string[] DeckList = new String[52];


        class Card
        {
            //Var to hold description text


            static void Main(string[] args)
            {

                foreach (string rank in Enum.GetNames(typeof(Suit)))
                {

                    foreach (string value in Enum.GetNames(typeof(value)))
                    {
                            string DescriptiveText;
                            DescriptiveText = value + " of " + rank;
                            //I want to push the descriptivetext value into the DeckList string Array. 
                            Console.WriteLine(DescriptiveText);
                    }

                }
                Console.ReadKey();

                // Go to http://aka.ms/dotnet-get-started-console to continue learning how to build a console app! 
            }

        }
    }
}

Я ожидаю, что массив будет заполнен, я бы хотел, чтобы консоль записывала в журнал содержимое массива, а не поддерживала значения при их создании.Любой вклад очень ценится, это просто для обучения, поэтому я могу понять основы C #.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Я думаю, вам следует добавить эту строку в ваш второй код foreach в классе карты.

cards.Add(new Card(rank, value));
0 голосов
/ 09 февраля 2019

Лично у меня не было бы класса Card, определенного в классе Deck.Я бы определил их отдельно и создал бы массив Card в колоде:

class Deck
{
    private IList<Card> cards = new List<Card>();

    public Deck()
    {
        foreach (string rank in Enum.GetNames(typeof(Suit)))
        {
            foreach (string value in Enum.GetNames(typeof(value)))
            {
                cards.Add(new Card(rank, value));
            }
        }
    }

    // Call cards[i].GetFullName() if you want the name.
}

class Card
{
    private Suit _suit;
    private Name _name;

    public Card(Suit suit, Name name)
    {
        _suit = suit;
        _name = name;
    }

    public string GetFullName()
    {
        return _name + " of " + _suit;
    }
}

Также я бы не стал строить классы вокруг вашей функции Main ().Это точка входа в программу.Создайте свои классы вне Main (), а затем создайте их экземпляры из Main ():

static void Main(string[] args)
{
    Deck deck = new Deck();

    // Whatever functions you define in the Deck class, call them here.
}

Редактировать: увидев комментарий к исходному вопросу, я согласен, что List будет проще, чем массив,так что я сделал это изменение.

...