2017-11-11 2 views
-1

Ich versuche, "+ =" zu verwenden, um "Int Pos" in der zweiten Klasse um 1 für jedes Mal zu erhöhen, wenn ich die for-Schleife ausführe. Aber es funktioniert nicht so gut wie das, was ich im statischen void main gemacht habe.Verwendung von Operator + = in C# -Wert

Hier ist mein Code:

namespace Newbie 
{ 
public class Firstclass { 
    int Pos = 1; 
    int Neg = 0; 
    public void Method1(string str) { 
     if (Pos > Neg) 
     { 
      Secondclass obj = new Secondclass(); 
      obj.Pos += 1; 
      obj.Method2(); 
     } 
    } 
} 
public class Secondclass { 
    public int Pos = 0; 
    public int Neg = 0; 
    public void Method2() { 
     if (Pos > Neg) { 
      Console.WriteLine("Pos = {0}", Pos); 
    Console.WriteLine(); 
     } else { Console.WriteLine("fail"); } 
    } 
} 

class Program { 
    static void Main(string[] args) { 

     for (; ;) { 
      string e = Console.ReadLine(); 
      Firstclass objj = new Firstclass(); 
      objj.Method1(e); 
     } 
    } 
} 
} 
+0

Was ist das Problem? Es ist richtig, wenn Sie Pos-Prop der zweiten Klasse in 'for' -Schleife erhöhen möchten, sollten Sie public variable verwenden, aber jedes Mal, wenn Sie' obj' von 'SecondClass' instanziieren, dann' Pos' mit Null initiieren und einfach jedes Mal 1 sein . – Aria

+0

Jetzt ist es nur immer 1. Ich will, dass es 1 -> 2 -> 3 -> 4. – Theair

Antwort

0

Ihr Code ist genau das, was zu erwarten ist - zeigt Po = 1 jedes Mal, wenn Sie die Eingabetaste drücken.

Wenn erwarten Sie

Pos = 1

Pos = 2

Pos = 3

...

Sie sehen sollten folgende Änderungen Firstclass und Haupt machen

Viel Glück beim Lernen C# :)

public class Firstclass 
{ 
    int Pos = 1; 
    int Neg = 0; 
    Secondclass obj = new Secondclass(); // this should be here 
    public void Method1(string str) 
    { 
     if (Pos > Neg) 
     { 
      //Secondclass obj = new Secondclass(); -- you shouldn't create new object any time Method1 is called 
      obj.Pos += 1; 
      obj.Method2(); 
     } 
    } 
} 


class Program 
{ 
    static void Main(string[] args) 
    { 
     Firstclass objj = new Firstclass(); // this should be here 
     for (; ;) 
     { 
      string e = Console.ReadLine(); 
      //Firstclass objj = new Firstclass(); -- you shouldn't create new object on every iteration 
      objj.Method1(e); 
     } 
    } 
}  
+0

vielen Dank :))))) seine wirklich Arbeit ist – Theair

+0

@Theair sollten Sie es als die richtige Antwort zu markieren;) –

+0

ist es das Tick unter der Abstimmung für nützlich/nicht nützlich ??? :O – Theair