ne contient pas un constructeur qui prend 3 arguments
s'il vous plaît garder avec moi en tant que je suis en train d'apprendre le C#. Juste déconner avec le C#, j'ai décidé de venir avec un système d'inventaire pour tester mais j'ai un problème dans mon script:
using System;
using System.Collections.Generic;
public class Item
{
public String name;
public int pesos;
public int getPesos()
{
return pesos;
}
public String getName()
{
return name;
}
}
public class statuseffect
{
statuseffect(string Effect,int Amount,int Duration)
{
string effect = Effect;
int amount = Amount;
int duration = Duration;
}
}
public class Potion : Item
{
public int hpeffect;
public int mpeffect;
List<statuseffect> effects = new List<statuseffect>();
public Potion(int hp,int mp)
{
hpeffect = hp;
mpeffect = mp;
}
public void addEffect(statuseffect eff)
{
effects.Add(eff);
}
}
class game
{
public static void Main()
{
Potion healthPotion = new Potion(200,50);
healthPotion.pesos = 23;
Console.WriteLine(healthPotion.hpeffect);
statuseffect slow = new statuseffect("slow",10,30);
}
}
dans la dernière ligne le compilateur me dit que statuseffect ne contient pas un constructeur qui prend 3 arguments. À partir de ce que je peux dire, il ne contient 3 arguments. Est-il quelque chose qui me manque ici?
comme une note de côté. les gars si vous avez des commentaires ou des suggestions pour mon script, qui pourrait être utile en tant que bien.
- Si vous êtes juste de commencer la programmation, j'ai hâte de vous en tenir à une stricte des conventions de nommage: msdn.microsoft.com/en-us/library/xzf533w0(v=vs. 71).aspx (maintenant vos méthodes commencent par des minuscules, donc ne statuseffect classe, public de variables de classe ne devrait pas être champs - faire en tant que propriétés, des espaces aussi des questions)
- Vous devez démarrer la lecture d'un bon livre sur C# et de la programmation orientée objet
- ouais c'est mon deuxième jour sur C# et donc j'ai encore beaucoup à apprendre. Tous les livres de suggestions sont les bienvenues.
- normalement, les élèves apprennent les concepts de la programmation orientée objet en C++, mais si vous êtes l'apprentissage de la programmation orientée objet et l'utilisation du langage C# puis "Professionnel de C# par WROX" est le meilleur
Vous devez vous connecter pour publier un commentaire.
Votre constructeur est
private
et donc "invisible" pour le code en dehors de la classe elle-même. Essayez d'ajouter le mot-cléinternal
avant que le constructeur. Ou, s'il doit être visible à partir d'autres projets, ajoutezpublic
à la place.Une autre question: Dans votre classe
statuseffect
, vous déclarez trois local variable à l'intérieur de votre constructeur. Ceux variable est uniquement portée par le constructeur. Vous devez déplacer leurs déclarations de l'entrepreneur (ils deviennent alors instance champs de la classe). Le constructeur peut toujours attribuer à eux.Votre constructeur doit être marqué
public
.Comme
c#
est plus précisément un Objectt langage orienté de sorte que chaque chose que vous déclarez dans une classe sans un spécificateur d'accès, il est considéré comme privé par le compilateur. Afin de déclarer votre constructeurpublic
, qui permettra de résoudre le casFaire votre constructeur public. Lorsque vous ne spécifiez aucun accès spécificateur par défaut, il devient privé, signifie qu'il ne peut être utilisé à l'intérieur de votre classe. Rendant public le rend accessible de l'extérieur.
En outre faire quelque chose avec ces variables, elles ne sont d'aucune utilité.