Удаление элемента из списка с помощью метода класса - PullRequest
0 голосов
/ 16 января 2020

У меня есть 2 класса "Ooievaar" (аист) и "Kikker" (лягушка). Теперь я пытаюсь съесть лягушку у аиста. Я думал, что смогу сделать это, удалив случайную лягушку из списка в моем основном коде, используя метод "eetkikker", но я понятия не имею, как это сделать. Любые советы помогут!

Класс Ooievaar (Stork)

 class Ooievaar : Dier
    {
        private int GegetenKikkers;

        public Ooievaar(string naam, string geslacht, int leeftijd, int gegetenKikkers) : base(naam, geslacht, leeftijd)
        {
            GegetenKikkers = gegetenKikkers;
        }

        public void EetKikker(Kikker kikker)
        {

        }
    }

Класс Kikker (лягушка)

class Kikker : Dier
    {
        public Kikker(string Naamdier, string GeslachtDier, int Leeftijd) : base(Naamdier, GeslachtDier, Leeftijd)
        {
        }

        public override string ToString()
        {
            return $"Mijn naam is {Naam} de eend en ik ben een {Geslacht} van {Leeftijd} jaar oud.";
        }
    }

Основной код

 public partial class Vijver : Form
    {
        private Random rnd = new Random();

        List<Kikker> kikkers2Kikkers = new List<Kikker>();
        Kikker Kikker1 = new Kikker("Frank", "Man", 2);
        Kikker Kikker2 = new Kikker("John", "Man", 1);

        Ooievaar ooievaar1 = new Ooievaar("Britt", "vrouw", 2, 50);
        public Vijver()
        {
            InitializeComponent();
            Kikkers2Kikkers.add(Kikker1);
            Kikkers2Kikkers.add(Kikker2);
        }
    }

Ответы [ 2 ]

1 голос
/ 16 января 2020

Если вы хотите удалить элемент, вы будете использовать метод удаления. Список документации Microsoft .Remove (T) .

Kikkers2Kikkers.Remove(Kikker1); // this will remove Kikker1 out of the list

Если вы хотите сделать это случайным, вы должны использовать RemoveAt и в параметрах в индексе, который вы хотите удалить. Документация Microsoft Случайный класс . Используя этот класс, вы можете легко получить случайные значения.

Random rnd = new Random(); //Create random object
int index = rnd.Next(Kikkers2Kikkers.Count); //Get value possible from your list
Kikkers2Kikkers.RemoveAt(index); // Removes a kikker randomly

Но это не полное решение вашей программы. Это должно дать вам представление о том, как удалить объект из списка случайным образом.

Редактировать: Я бы не пытался удалить его из вашего класса ooievaar. Я бы сделал метод в вашем основном коде и назвал бы его

OoievaarEetKikker(Ooievaar ooiveraar, Kikker kikker){
    ooievaar.EetKikker(); // In the Ooievaar class just add 1 to eaten kikkers
    Kikkers2Kikkers.Remove(kikker); // This deletes the kikker. You could use the random method from above.
}
0 голосов
/ 17 января 2020
class Program
    {
        static void Main(string[] args)
        {
            List<Kikker> kikkers2Kikkers = new List<Kikker>();

            Kikker Kikker1 = new Kikker("Frank", "Man", 2);
            Kikker Kikker2 = new Kikker("John", "Man", 1);

            Ooievaar ooievaar1 = new Ooievaar("Britt", "vrouw", 2, 50);

            //add the kikkers to the list
            kikkers2Kikkers.Add(Kikker1);
            kikkers2Kikkers.Add(Kikker2);

            //random number
            Random rnd = new Random();
            var rndNumber = rnd.Next(0, 2);
            Console.WriteLine(rndNumber); 

            //calling Eatkikker
            string deadKikker = ooievaar1.EetKikker(kikkers2Kikkers, rndNumber);

            //Rip kikker
            Console.WriteLine("Byebye " + kikkers2Kikkers.ElementAt(rndNumber));

            //remove dead kikker from list
            kikkers2Kikkers.RemoveAt(rndNumber);

            Console.ReadKey();
        }
    }

И класс Ooievaar с методом EatKikker:

class Ooievaar: Dier {private int GegetenKikkers;

public Ooievaar(string naam, string geslacht, int leeftijd, int gegetenKikkers) : base(naam, geslacht, leeftijd)
{
    GegetenKikkers = gegetenKikkers;
}

public string EetKikker(List<Kikker> kikker, int rndNumber)
{
    //get the right kikker
    Kikker getKikker = kikker.ElementAt(rndNumber);
    //return a string
    return "Hello my name is " + getKikker.Naamdier + " and I am dead.";
}

}

Имейте в виду, что нет обработки исключений, например IndexOutOfRangeException. rnd.Next(0, 2); генерирует либо 0, либо 1. Remove.At требует using System.Linq.

...