Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème operateur out

Sujet résolu
20 janvier 2020 à 23:27:02

bonjour je commence juste a développer en c# et me voila confronté a un problème

j' ai creer une classe pour m'entrainer avec ces dernières car je dois encore m'habituer a les utiliser et mon compilateur (qui est mcs sous linux) me renvoie ces erreurs :

Program.cs(41,13): error CS0269: Use of unassigned out parameter `banque'
Program.cs(48,13): error CS0269: Use of unassigned out parameter `banque'

mon code ressemble a cela :

using System;

namespace c_
{
    public class bags {
        private string  b_marque;
        public string Marque {
            get { return b_marque; }
            set { b_marque = value; }
        }

        private double b_prix;
        public double Prix {
            get { return b_prix; }
            set { b_prix = value; }
        }

        private int b_nombre;
        public int Nombre {
            get { return b_nombre; }
            set { b_nombre = value; }
        }
        
        public bags() {
            Console.WriteLine("Nouvelle gamme de sac a dos");
        }

        public bags(string marque, double prix, int nombre) {
            this.b_prix = prix;
            this.b_marque = marque;
            this.b_nombre = nombre;
            Console.WriteLine("Nouvelle game de sac a dos a été crée. Ils sont de la marque " + marque + ", coûte " + prix + "€, et il y a un stock de " + nombre + " sacs.");
        }

        ~bags() {
            Console.WriteLine("la marque " + this.b_marque + " n'est plus vendu.");
        }

        public void new_stocks(out double banque) {
            this.b_nombre += 20;
            banque -= this.b_prix * 20;
            Console.WriteLine("les stocks ont été renouvelé. Il vous reste " + banque + "€.");

        }

        public void achat(int nb, out double banque) {
            this.b_nombre -= nb;
            banque += this.b_prix * nb;
            Console.WriteLine(nb + " sacs ont été acheté. Il vous reste " + banque + "€.");
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            double banque = 500;
            bags b1 = new bags("eastpacks", 15.35, 50);
            
            b1.achat(12, out banque);
            b1.new_stocks(out banque);

            bags b2 = new bags("chausséa", 0.5, 150);

            b1.achat(50, out banque);
            b2.achat(2, out banque);
            b2.new_stocks(out banque);
            b1.new_stocks(out banque);
        }
    }
}

et je ne trouve pas

quelqu’un aurait il la réponse a mon questionnement?

merci

Tidiandelage1

  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2020 à 10:26:59

Salut,

La page sur l'erreur : https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0269

Et le message d'erreur est assez clair, il faut initialiser la variable "banque" avant de s'en servir dans la méthode.

Apparemment tu l'initialises en dehors de la méthode donc tu devrais plutôt utiliser "ref" à la place de "out".

  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2020 à 10:42:27

en me renseignant je me suis rendu compte que utiliser un type statique serait plus simple pour moi et c'est donc ce que j'ai fait et mon programme fonctionne bien merci quand meme
  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2020 à 10:56:12

Une static est une fausse bonne idée.
  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
21 janvier 2020 à 19:32:30

Tu peux passer par référence avec ref
  • Partager sur Facebook
  • Partager sur Twitter