2016-03-20 15 views
0

Eh, basitçe, ben (C# için yeni) şu anda yapılar hakkında bilgi bu benim yapı (+ ctor)bir sınıf içinde bir yapı kullanırken, değerleri sıfır

public struct BusLine 
{ 
    public int busNumber { get; set; } 
    public int passengersNumber { get; set; } 
    public double drivePrice { get; set; } 
    public double distanceBeginToEnd { get; set; } 
    public int stopsNumber { get; set; } 

    public BusLine(int _busNumber, int _passengersNumber, double _drivePrice, double _distanceBeginToEnd, int _stopsNumber) 
    { 
     busNumber = _busNumber; 
     passengersNumber = _passengersNumber; 
     drivePrice = _drivePrice; 
     distanceBeginToEnd = _distanceBeginToEnd; 
     stopsNumber = _stopsNumber; 
    } 
} 

ve bu benim otobüs olduğunu sınıf

public class Bus 
{ 
    public BusLine Line { get; set; } 
    public int currentPassengers { get; set; } 
    public int currentStop { get; set; } = 1; 

    public void EnterStation(int newPassengers, int passengerLeaves) 
    { 
     currentPassengers = Line.passengersNumber + newPassengers - passengerLeaves; 
    } 
    public string Drive() 
    { 
     if (currentStop == this.Line.stopsNumber) 
     { 
      return string.Format("Stop number: {0}\nPassengers quantity: {1}\nThis is the final STOP!\n", currentStop, currentPassengers); 
     } 
     return string.Format("Stop number: {0}\nPassengers quantity: {1}\n", currentStop++, currentPassengers); 
    } 
} 

Şimdi sorun şu:

Random rand = new Random(); 
BusLine BLine = new BusLine(_busNumber: 88, _passengersNumber: 22, _drivePrice: 6.90, _distanceBeginToEnd: 101.4, _stopsNumber: 15); 
Bus bus = new Bus(); 
while (BLine.stopsNumber != 0) 
{ 
    BLine.stopsNumber--; 
     bus.EnterStation(rand.Next(1, 12), rand.Next(1, 12)); 
     string getDrive = bus.Drive(); 
     Console.WriteLine(getDrive); 
} 
: i yapı ve (program.cs içinde) sınıfı bu şekilde hem örneğini zaman

o (Bus.cs içinde) bu çizgidir görünüyor:

currentPassengers = Line.passengersNumber + newPassengers - passengerLeaves; 

Line.passengersNumber = this.Line.stopsNumber artık her zaman sıfır olduğundan 0 daima ve

if (currentStop == this.Line.stopsNumber) 

asla occures Yapılarımın kullanımı ile ilgili bir şeylerin yanlış olduğunu anlıyorum, ama onları BusLine.cs dosyasının içerisine dahil ettim, bu yüzden Bus.cs'de kullanıldığında değerleri hala 0 olur mu? Teşekkürler oner çocuklar

+0

Kesme noktaları belirleme ve kod boyunca adım adım hata ayıklayıcısını kullanarak başlamanızı öneririm .. – MethodMan

+0

Hiçbir zaman, 'Bus' nesnesinde' Line' örneğini oluşturmuyorsunuz. Bunu yapmanız gerekecek: 'bus.Line = BLine' –

+0

bunu, sorunun asgari bir versiyonuna indirebilir misiniz? Burada gerçekten ilgili olmayan bir ton gürültü var gibi görünüyor. – kai

cevap

6

Bu, BLine'ı veri yolunda hiçbir zaman Line olarak ayarladığınıza benzemiyor. Eğer B-hattı sadece aynı tipte olan kenara bus.Line ile hiçbir ilgisi yoktur, bunu zamana kadar

Bus bus = new Bus() { Line = BLine }; 

: o otobüs beyanı değiştirin.

+0

Çalışıyor. Eğer Program.cs içinde BusLine ctor'ı başlatırsanız Bus.cs – N3wbie

+0

No içindeki BusLine veri satırı değişkenini kullanmak için yeterli olması gerektiğini, çünkü sizin sorunuzda, iki ayrı BusLines: O otobüste yaşıyor. Programda oturan kişi girdiğiniz tüm bilgilere sahiptir, ancak veri yolu içindeki veri hala varsayılan değerlere sahiptir. Eğer sorununuzu çözmüş olsaydı, cevabımı bu şekilde işaretlediğiniz için minnettar olurum. Teşekkürler :) – paste

İlgili konular