Закрытые, защищенные и открытые поля

Рейтинг: 1Ответов: 1Опубликовано: 27.12.2014

Учусь по учебнику для школьников с MSDN: C# для вундеркиндов

Раздел "Закрытые, защищенные и открытые поля".

Пример выдаёт ошибку

 class Animal
 {
     public string kindOfAnimal;
     public string name;
     public int numberOfLegs;
     public int height;
     public int length;
     public string color;
     bool hasTail;
     protected bool isMammal;
     private bool spellingCorrect;
 }

 class Zoo
 {
     Animal a = new Animal ();

     // Следующая строка будет выполнена успешно, поскольку классу «Zoo» разрешено
     // обращаться к открытым полям в классе «Animal»
     a.kindOfAnimal = “Kangaroo”;

     // Обе следующие строки НЕ будут выполнены, поскольку классу «Zoo»
     // не разрешено обращаться к закрытым или защищенным полям
     a.isMammal = false;           // Попытка обращения к защищенному методу
     a.spellingCorrect = true;     // Попытка обращения к закрытому методу
 }

Вопрос в том, как сделать так, чтобы всё работало? И вообще, у меня консольное приложение под C# не запускается без этого в 1 классе:

static void Main(string[] args)
{

    Animal Barsik;
    Barsik = new Animal();
    ...

Пишу так.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class Animal
{
    string kindOfAnimal;
    string name;
    int numberOfLegs;
    int height;
    int length;
    string color;
    bool hasTail;
    bool isMammal;
    bool spellingCorrect;

    static void Main(string[] args)
    {
        Animal Barsik;
        Barsik = new Animal();

        Barsik.kindOfAnimal = "Cat";
        Barsik.name = "Кот Барсик";
        Barsik.numberOfLegs = 4;
        Barsik.height = 50;
        Barsik.length = 110;
        Barsik.color = "Black";
        Barsik.hasTail = true;
        Barsik.isMammal = true;

        Console.WriteLine("Yo!");
        Console.WriteLine(Barsik.color);
        Console.ReadLine();
    }

    class Zoo
    {
        Animal a = new Animal ();

        // Следующая строка будет выполнена успешно, поскольку классу «Zoo» разрешено
        // обращаться к открытым полям в классе «Animal»
        a.kindOfAnimal = “Kangaroo”;

        // Обе следующие строки НЕ будут выполнены, поскольку классу «Zoo»
        // не разрешено обращаться к закрытым или защищенным полям
        a.isMammal = false;           // Попытка обращения к защищенному методу
        a.spellingCorrect = true;     // Попытка обращения к закрытому методу
    }   
}

Выдаёт 6 ошибок:
непредвиденные кавычки, недопустимая лексема = и опять про кавычки.

Ответы

▲ 2Принят

Проблема в том, что Вы внутри класса Zoo пишете исполняемый код. Объявите внутри него метод и уже внутри метода пишите код

class Zoo
{
  public void SomeMethod()
  {
    Animal a = new Animal ();
    // и т.д.
  }
}