Książka Core C# i.NET problemy.

0

Cześć. Jestem nowy na tym forum właśnie zaczołem naukę z tej książki i czym bardziej wgłębiam się w lekturę to zaczynam się załamywać ilością błędów w pisanym kodzie przez autora. Pewnie takie kiepskie tłumacznie :(
Za przykład podam najprostszą rzecz na stronie 124 w listing 3.10 zadeklarowana stałą cytuje " static cmPerInch = 2.54; " jak ktoz ma dostęp do książki może sprawdzić. Mam nadzieje ze pomożecie mi w poprawianiu kodów jakie napotkam. Własnie się meczę teraz nad Interface , próbuje zbić w całość kod, trochę go przerobiłem z książki usuwając błędy jakie zauważyłem. Nie wiem co jest źle, mogą tez być moje błędy których nie zauważyłem.

 
using System;
public interface IShapeFunction
{
    double GetArea();
}
public class Circle : IShapeFunction
{
      private double radius;
      public double circle (double rad)
      {
              radius = rad;
      }
      public double GetArea()
      {
              return (Math.PI * radius * radius );
      }
      public string ShowMe()
      {
              return ("Kolo");
      }
}
class Rectagle : IShapeFunction
{
        private double weidth, height;
        public double  rectagle (double myWidth, double myHeight)
        {
              weidth = myWidth;
              height = myHeight;
        }
        public double GetArea()
        {
        return (weidth * height );
        }
}
class MyApp
{
  public static void Main()
  {   
     Circle myCircle = new Circle(4);
     IShapeFunction myICircle = myCircle;
     Rectagle myRectagle = new Rectagle(4, 8);
     IShapeFunction[] myShapes = { myCircle, myRectagle};
     Console.WriteLine(myCircle.GetArea().ToString());
     Console.WriteLine(myShapes[0].GetArea().ToString());
     Console.WriteLine(myCircle.ShowMe());
     Console.WriteLine(myICircle.GetArea().ToString());
     Console.WriteLine(myICircle.ShowMe());
     Console.Read();
  }
}

załaczam zdjęcie strony http://img717.imageshack.us/i/obrazes.jpg/

0

Jeśli to

      public double circle (double rad)
      {
              radius = rad;
      }

ma być konstruktor, to nie powinien nic zwracać, a nazwa musi zgadzać się wielkością liter z nazwą klasy. Analogicznie w drugiej klasie.

0

Dzięki cenna uwaga, teraz nie wiem tylko dlaczego wywala błąd " IShapeFunction " z " ShowMe() "

1

Jak na razie udało ci się kilka błędów dodać .

1 - konstruktor nie może mieć wartości zwracanej - to już Heko zauważył.
2 - public interface IShapeFunction> - nie mów że to kompilator przepuści - w książce tak na pewno nie ma.
3- Cytuje komentarz poniższa instrukcja zostanie odrzucona przez kompilator, ponieważ zmienna myCircle może uzyskać dostęp tylko do składowych interfejsy IShapeFunction.

0

Dzięki teraz po poprawieniu błędów kompiluje się.

0

Widzę ze szybko idzie wam rozwiązywanie problemów wiec spytam się co mam w tym kodzie dopisać aby skompilować.

 
using System;
class My
{
   public class IoMonitor
   {
      public delegate void IoDelegate(string s);
      public event IoDelegate DataReceived;
      public void FireReceivedEvent (string msg)
      {
             if (DataReceived != null)   
                 {
                     DataReceived(msg); //wywołanie zwrotne 
                 }
       }
    }
   static void Main()
   {
   IoMonitor monitor = new IoMonitor();
   //musisz wskazac metodę która  będzie obsługiwała wywołanie zwrotne.
   monitor.DataReceived += new IoDelegate(/*metoda zwrotna*/);
   monitor.FireReceivedEvent("Bufor jest pelny");
   Console.Read();
   }
}                    
1

W ramach wyjątku:

using System;
class My
{
    public class IoMonitor
    {
        public delegate void IoDelegate(string s);
        public event IoDelegate DataReceived;
        public void FireReceivedEvent(string msg)
        {
            if (DataReceived != null)
            {
                DataReceived(msg); //wywołanie zwrotne
            }
        }
    }

    static void f(string s)
    {
        Console.WriteLine("Recived {0}.", s);
    }

    static void Main()
    {
        IoMonitor monitor = new IoMonitor();
        //musisz wskazac metodę która  będzie obsługiwała wywołanie zwrotne.
        monitor.DataReceived += new IoMonitor.IoDelegate(f);
        monitor.FireReceivedEvent("Bufor jest pelny");
        Console.Read();
    }
}

Ale pytanie o każdą rzecz na forum nie jest najlepszym pomysłem...

0

Dzięki wrzuciłem to z czym nie dałem sobie rady. Mam nadzieję ze mało będę miał problemów z innymi przykładami z książki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1