2016-12-11 14 views
0

Я просматривал это в течение нескольких часов и не могу найти причину, по которой ничего не выводится. Никаких ошибок не указано, так что это что-то в самом коде. Может кто-нибудь, пожалуйста, посмотрите на это и, возможно, поймайте то, что я не вижу? Благодаря!Нужен второй комплект глаз на код C#

namespace ConsoleApplication8 
{ 
    class Tape 
    { 
     public Tape(int length, int width) 
     { 
      len = length; 
      wid = width; 
     } 
     public int len { get; set; } 
     public int wid { get; set; } 

     public override string ToString() 
     { 
      return string.Format("{0}\nLength: {1}\nWidth: {2}", GetType(), len, wid); 
     } 
    } 

    class VideoTape : Tape 
    { 
     public int PlayTime { get; set; } 
     public VideoTape(int length, int width, int playTime) 
      : base(len, wid) 
     { 
      PlayTime = playTime; 
     } 
     public override string ToString() 
     { 
      return string.Format("{0}\nPlay Time: {1}", base.ToString(), PlayTime); 
     } 
    } 
    class AdhesiveTape : Tape 
    { 
     private int _stickiness; 
     public AdhesiveTape(int length, int width, int stickiness) 
      : base(length, width) 
     { 
      Stickiness = stickiness; 
     } 
     public int Stickiness 
     { 
      get { return _stickiness; } 
      set 
      { 
       if (value >= 1 && value <= 10) 
        _stickiness = value; 
       else 
        _stickiness = 0; 
      } 
     } 
     public override string ToString() 
     { 
      return string.Format("{0}\nStickiness: {1}", 
       base.ToString(), (Stickiness == 0) ? "Invalid Input" : Stickiness.ToString()); 
     } 
    } 

    class Test 
    { 
     static void Main(string[] args) 
     { 
      var tape = new Tape(100, 10); 
      var videoTape = new VideoTape(50, 5, 200); 
      var adhesiveTape = new AdhesiveTape(500, 8, 8); 

      Console.WriteLine(tape); 
      Console.WriteLine(videoTape); 
      Console.WriteLine(adhesiveTape); 

      Console.ReadLine(); 
     } 
    } 
} 
+2

Существует ошибка компиляции для ': base (len, wid)', она должна быть 'base (length, width)' –

+0

точно, есть ошибка компиляции в использовании базового конструктора ... тогда она работает нормально –

+0

@YacoubMassad Я не уверен, что это ошибка компилятора, так как VideoTape наследует от Tape, а 'len' и' wid' - допустимые поля этого класса, но это почти наверняка опечатка. – Abion47

ответ

1

Как было сказано выше, есть передача параметров проблема в конструктор типа-видеопленку призвании базовый конструктор, следующий код работает для меня:

using System; 
    namespace ConsoleApplication8 
    { 
     class Tape 
     { 
      public Tape(int length, int width) 
      { 
       len = length; 
       wid = width; 
      } 
      public int len { get; set; } 
      public int wid { get; set; } 

      public override string ToString() 
      { 
       return string.Format("{0}\nLength: {1}\nWidth: {2}", GetType(), len, wid); 
      } 
     } 

     class VideoTape : Tape 
     { 
      public int PlayTime { get; set; } 
      public VideoTape(int length, int width, int playTime) 
       : base(length, width) 
      { 
       PlayTime = playTime; 
      } 
      public override string ToString() 
      { 
       return string.Format("{0}\nPlay Time: {1}", base.ToString(), PlayTime); 
      } 
     } 
     class AdhesiveTape : Tape 
     { 
      private int _stickiness; 
      public AdhesiveTape(int length, int width, int stickiness) 
       : base(length, width) 
      { 
       Stickiness = stickiness; 
      } 
      public int Stickiness 
      { 
       get { return _stickiness; } 
       set 
       { 
        if (value >= 1 && value <= 10) 
         _stickiness = value; 
        else 
         _stickiness = 0; 
       } 
      } 
      public override string ToString() 
      { 
       return string.Format("{0}\nStickiness: {1}", 
        base.ToString(), (Stickiness == 0) ? "Invalid Input" : Stickiness.ToString()); 
      } 
     } 

     class Test 
     { 
      static void Main(string[] args) 
      { 
       var tape = new Tape(100, 10); 
       var videoTape = new VideoTape(50, 5, 200); 
       var adhesiveTape = new AdhesiveTape(500, 8, 8); 

       Console.WriteLine(tape); 
       Console.WriteLine(videoTape); 
       Console.WriteLine(adhesiveTape); 

       Console.ReadLine(); 
      } 
     } 
    } 

Изменено:

public VideoTape(int length, int width, int playTime) 
      : base(len, wid) 

До:

public VideoTape(int length, int width, int playTime) 
      : base(length, width) 

Len и WID не являются параметрами конструктора видеопленки, таким образом, не может быть передан в базовый конструктор

Вот .net скрипка, где вы можете увидеть его работу и поиграйте с ним: https://dotnetfiddle.net/YZUC4O

+1

Возможно, в вашем ответе вы можете указать OP на точный вопрос и то, что вы исправили, и почему ваше исправление работает. В противном случае другим людям нужно будет найти исправление во всем том, что вы вставили код. – CodingYoshi

+0

@CodingYoshi Done, спасибо за подсказку –

+0

После изменения кода на моем конце я все равно не получил выход. Я изменил его так, как ты. – EVar