2015-10-16 1 views
1

Я имеющий проблемы в моем коде с этим исключением:System.FormatException в WriteLine

enter image description here

System.FormatException

Дополнительная информация: Входная строка не была в правильном формате ,

У меня есть два файла в моей Visual Studio C# решение:

  1. Program.cs:

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    
    namespace EventPubSub 
    { 
        class Program 
        { 
         static void Main(string[] args) 
         { 
          Rectangle rect = new Rectangle(); 
          // Subscribe to the Changed event 
          rect.Changed += new EventHandler(Rectangle_Changed); 
          rect.Length = 10; 
         } 
         static void Rectangle_Changed(object sender, EventArgs e) 
         { 
          Rectangle rect = (Rectangle)sender; 
          Console.WriteLine("Value Changed: Length = { 0}", rect.Length); 
         } 
        } 
    } 
    
  2. файл Rectangle.cs:

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    
    namespace EventPubSub 
    { 
        class Rectangle 
        { 
         //Declare an event named Changed of 
         //delegate type EventHandler 
    
         public event EventHandler Changed; 
    
         private double length = 5; 
    
         public double Length 
         { 
          get 
          { 
           return length; 
          } 
          set 
          { 
           length = value; 
           //Publish the Changed event 
           Changed(this, EventArgs.Empty); 
          } 
         } 
        } 
    } 
    

Исключение возникает, когда я исполняю строку: rect.Length = 10; , когда я использую шаг за шагом исполнения (F10)

+1

Редкий случай, когда 'FormatException' не из-за 'int.Parse (« bob »)' ... –

ответ

1

есть пространство между { и 0 в обработчике, который ведет к исключению

0

Попробуйте сначала добавления try catch поймать ошибку он бросает. Таким образом, вы можете определить и исправить это. Это просто поможет вам решить вашу проблему в следующий раз. :)

static void Main(string[] args) 
    { 
    Rectangle rect = new Rectangle(); 
    string errorMessage = String.empty; 
    try 
    { 
      // Subscribe to the Changed event 
      rect.Changed += new EventHandler(Rectangle_Changed); 
      rect.Length = 10; 
     } 
     catch(Exception ex) 
     { 
      errorMessage = ex.Message; 
     } 
    } 
+0

после этого у меня есть это сообщение: строка ввода не была в правильном формате. – HDJEMAI

+0

, то это означает, что ваша проблема находится в части сообщения. Я просто преподаю вам здесь, как справиться с такой ошибкой в ​​следующий раз. «Преподавать человеку, как ловить рыбу лучше, чем кормить его рыбой». ;) – bot

+0

да, вы правы, спасибо снова – HDJEMAI

1

Пожалуйста, измените обработчик события, как это, все будет работать нормально

static void Rectangle_Changed(object sender, EventArgs e) 
    { 
     Rectangle rect = (Rectangle)sender; 
     Console.WriteLine(string.Format("Value Changed: Length = {0}", rect.Length)); 
    } 

Я сделал 2 изменения здесь -

  1. Добавлен string.Format (который не проблема)

  2. удален промежуток между { & 0. это было { 0} теперь я сделал это {0} (что является актуальной проблемой)

+0

t'm тестирование, я думаю, что сделал ошибку в моем формате – HDJEMAI

+0

сейчас работает – HDJEMAI

+0

рад узнать, что – Kapoor