C# message d'erreur pas assez explicite pour moi
Thomas33
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un problème avec mon code et je n'arrive pas à l'identifier.
On me dit : "exception levée"
"System.NullReferenceException:'La référence d'objet n'est pas définie à une instance d'objet'
On me dit l'erreur à la ligne 28
Voici mon code:
J'ai un problème avec mon code et je n'arrive pas à l'identifier.
On me dit : "exception levée"
"System.NullReferenceException:'La référence d'objet n'est pas définie à une instance d'objet'
On me dit l'erreur à la ligne 28
Voici mon code:
static void Main(string[] args)
{
public class Rectangle
{
private float longueur;
private float largeur;
public Rectangle()
{
}
public Rectangle(float longueur, float largeur)
{
this.longueur = longueur;
this.largeur = largeur;
}
public float surface()
{
return longueur * largeur;
}
private static float sommeSurface(List<Rectangle> rectangles)
{
float totalSurface= 0;
foreach(Rectangle rectangle in rectangles)
{
totalSurface += rectangle.surface();
}
return totalSurface;
}
}
}
Configuration: Windows / Opera 83.0.4254.70
5 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
es-tu certain d'avoir partagé ton code complet? -
En vrai, c'est quelque chose comme ça :
(Pour la fonction d'en bas, je n'arrivais pas à la coller à gauche de peur que ça ne marche plus du tout)
public class Rectangle { private float longueur; private float largeur; public Rectangle() { } public Rectangle(float longueur, float largeur) { this.longueur = longueur; this.largeur = largeur; } public float surface() { return longueur * largeur; } } private static float sommeSurface(List<Rectangle> rectangles) { float totalSurface= 0; foreach(Rectangle rectangle in rectangles) { totalSurface += rectangle.surface(); } return totalSurface; } -
Bonjour,
En effet, l'erreur vient certainement du code que tu n'as pas montré.
TaList
deRectangle
contient un ou desRectangle
qui est resténull
. Chaque élément dans taList
doit impérativement être unRectangle
initialisé. -
-
Rien n'est à changer dans le code que tu as montré.
Les changements sont dans le code que tu ne montres pas. Dans le code montré, la fonctionRectangle.sommeSurface()
n'est pas appelée, hors c'est le paramètre passé lors de l'appel qui est le problème.- Pour le moment, la fonction
sommeSurface()
calcule la somme des surfaces de laList
deRectangle
qui lui est passée.
Tu peux la transformer en ne sommant que lesRectangle
valides. C'est n'importe quoi, une fonction qui ne reçoit pas des paramètres valides ne peut pas faire quelque chose de sensé, ça serait:private static float sommeSurface(List<Rectangle> rectangles) { float totalSurface = 0; foreach ( Rectangle rectangle in rectangles ) { if ( rectangle != null ) totalSurface += rectangle.surface(); } return totalSurface; }
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour Thomas.
Comme tu ne sembles pas comprendre la "portée" de ton problème.
Je te propose de mettre un point d'arrêt à la lignefloat totalSurface = 0;
Et avec les outils de déboggage, de regarder le contenu de la variable "rectangles"
Et là, peut-être tu comprendras ce que Dalfab (que je salue au passage) essaye de t'expliquer, et je citeEn effet, l'erreur vient certainement du code que tu n'as pas montré.
ou encore
C'est n'importe quoi, une fonction qui ne reçoit pas des paramètres valides ne peut pas faire quelque chose de sensé