Also habe ich diese BasisklasseWie Basisklasse setzt die Werte in dem abgeleiteten Konstruktor
abstract class Item
{
private int x, y, ataque, defesa, saude, raridade;
private char appearance;
private bool pickedUp;
private readonly Random rng = new Random();
public Item(Map argMap, int argAtaque, int argDefesa, int argSaude, int argRaridade, char argAppearance)
{
bool empty = false;
while (!empty)
{
x = rng.Next(1, argMap.ReLengthX() - 1);
y = rng.Next(1, argMap.ReLengthY() - 1);
if (!argMap.CheckTile(y, x)) empty = true;
}
pickedUp = false;
ataque = argAtaque;
defesa = argDefesa;
saude = argSaude;
raridade = argRaridade;
appearance = argAppearance;
}
}
Und ich habe diese abgeleiteten Klasse
class Armadura : Item
{
public Armadura(Map argMap, int ataque, int defesa, int saude, int raridade, char appearance) : base(argMap, ataque, defesa, saude, raridade, appearance)
{
ataque = -1;
defesa = 2;
saude = 0;
raridade = ReRNG().Next(Convert.ToInt32(Math.Round(argMap.ReLengthY() * 0.02)), Convert.ToInt32(Math.Round(argMap.ReLengthY() * 0.04)));
appearance = ' ';
}
}
meine Frage ist also, wie komme ich zu setze die Werte auf: base, benutze die Werte, die ich für den abgeleiteten Konstruktor gesetzt habe (zum Beispiel, setze die Basis argAtaque mit ataawwww, daher ist argAtaque gleich '-1')? Ich habe versucht, dies mit ein paar Möglichkeiten, aber ich habe das nicht irgendwie funktionieren. Ich danke Ihnen im Voraus!
Der Aufruf von ': base (...)' ruft den Basiskonstruktor auf, der die Felder in der Basisklasse festlegt. Wolltest du das nicht? –
Es scheint, dass Visual Studio behauptet, dass die Werte, die ich im abgeleiteten Konstruktor definiere, niemals verwendet werden. – EpaXapate
Das stimmt, Sie ändern die Parameter in die Methode * nachdem * sie an den Basiskonstruktor übergeben wurden. Wenn Sie immer -1 für "ataque" (in diesem Fall) übergeben möchten, sollten Sie den Aufruf einfach wie folgt in "base" ändern: ': base (argMap, -1, 2, 0, CallToStaticMethodThatProducesRaridade(), '') ; 'Außerdem, wenn Sie wirklich die Parameter * bis * dieses Konstruktors mehr brauchen, würden Sie höchstwahrscheinlich nur 'argMap' benötigen. –