2017-10-11 4 views
-1

Il semble que j'obtiens une valeur nulle/nulle pour mon paramètre passé & m et que leurs valeurs ne sont pas mises à jour dans la classe AHPmodel après avoir été affectées localement!Obtention de valeurs nulles/nulles pour les paramètres passés et non mises à jour après attribution locale

{ 

     public partial class Weighing_Factors_Pairwise : Form 
      { 
       private Form4 frm4; 

       public static int n { get; private set; } 
       public static int m { get; private set; } 

       AHPModel model = new AHPModel(n,m); 

       public Weighing_Factors_Pairwise(Form4 frm4) 
       { 
        InitializeComponent(); 
        this.frm4 = frm4; 
        n = frm4.checkbox.Count; 
        m = frm4.checksys.Count; 
       } 

       public AHPModel(int n, int m) 
       { 
        superDim = n * m; 
        nCriteria = n; 
        mChoices = m;    } 
       } 

       private void button5_Click(object sender, EventArgs e) 
       {  
         model.CalculateModel(); 
         GeneralMatrix calcCriteria = model.CalculatedCriteria; 
         GeneralMatrix results = model.ModelResult; 
         GeneralMatrix choices = model.CalculatedChoices; 
       } 
} 
+3

Ceci ne compilerait même pas, et ce n'est certainement pas un [mcve]. Où et comment vérifiez-vous les valeurs 'n' et' m' mises à jour? Et le seul endroit où vous les attribuez est dans le constructeur 'Weighing_Factors_Pairwise' – UnholySheep

+0

Je pensais que les getters et setters les mettraient à jour. Maintenant, cela fonctionne en passant localement les valeurs de l'instance. – zizobiko25

+0

Est-ce un défi où celui qui brise la plupart des conventions obtient le cookie? Cela a l'air horrible. Essayez l'analyse de code statique (Visual Studio) ou Resharper ou un autre moyen automatisé pour vous aider à voir où vous dévier du "bon code". – nvoigt

Répondre

0

Je pense que c'est parce que vous créez d'abord une instance de AHPModel où n, m sont tous les deux null. vous devriez faire un peu de remplacement dans l'ordre de vos déclarations, essayez celui-ci:

  AHPModel model; 
      public Weighing_Factors_Pairwise(Form4 frm4) 
      { 
       InitializeComponent(); 
       this.frm4 = frm4; 

       n = frm4.checkbox.Count; 
       m = frm4.checksys.Count; 
       APModel = new AHPModel(n,m); 
      } 
+0

Merci @MohsenCs. Ca marche maintenant comme un charme :) – zizobiko25