C# - Properties, Wie kann ich Prüfen, ob der Wert value in einem Feld vor kommt?

Palladin007

assimiliert
Wenn ich Eigenschaften lesen will, kann man dafür ganz einfach den get-Block verwenden.

Wenn ich nun aber eine Eigenschaft ändern will, muss ich den set-Block verwenden, was auch nicht weiter schwer ist.

Allerdings möchte ich dort gleich prüfen lassen, ob der Wert, der neu geschrieben werden soll, auch in einem bestimmten Feld vorhanden ist. Wenn nicht, soll etwas anderes getan werden.

Dafür habe ich das hier geschrieben:

Code:
    class Karte
    {
        private string Nummer;
        private string[] NummernArray = Spiel.GiveNummernArray();

        public void SetNummer
        {
            set
            {
                bool Result = PrüfeObEnthalten(NummernArray, value);

                if (Result)
                {
                    Nummer = value;
                }
                else
                {
                    throw new Exception("Error: wrong number");
                }
            }
        }

        private bool PrüfeObEnthalten<T>(T[] Array, T Element)
        {
            bool Result = false;

            foreach (T item in Array)
            {
                if (item.Equals(Element))
                {
                    Result = true;
                    break;
                }
            }

            return Result;
        }
    }

Das Problem an der ganzen Sache liegt in dieser Zeile:

bool Result = PrüfeObEnthalten(NummernArray, value);

Denn nach dieser Zeile gibt es folgenden Fehler:

Die beste Übereinstimmung für die überladene Kartenspiel.Karte.PrüfeObEnthalten(string[], object)-Methode hat einige ungültige Argumente.


Wie man in dem Methoden-Kopf von PrüfeObEnthalten() sieht, habe ich mit dem generischen Wert T gearbeitet, der dafür sorgen soll, dass zwar jeder Datentyp übergeben werden kann, aber Sowohl das Feld, als auch das Element den selben Datentyp haben.

Und nun weiß ich nicht, warum nicht value übergeben werden kann.

Oder kann mir jemand sagen, wie ich den Wert value in String konvertieren kann?

Oder hat jemand eine ganz andere Idee, wie z.B. eine bereits vor definierte Methode, die genau das tut, was ich in diesem Fall will?


Gruß
 
Achso, ich dachte, das man dort einen Datentyp nur angibt, wenn auch get vor kommt.

Aber wenn ich so darüber nachdenke, ist das auch sinnvoll, dass so auch value fest gelegt wird...


Deswegen hab ich als Datentyp immer void bekommen :D


Auf jeden Fall danke, werd das gleich umbauen^^
 
Oben