почему нельзя создать экземпляр из какого-либо класса вне конструктора? - PullRequest
0 голосов
/ 28 мая 2010

почему я создаю экземпляр вне класса. я даю наследование snifC для sinifD мне нужно создать экземпляр sinifC sinifc = new sinifC () в SinifD вне конструктора?

  public  class sinifC
    {
       public  void method3()
        {
            Console.WriteLine("Deneme3");
        }
    }

   public class sinifD : sinifC
    {
        void method4()
        {
            Console.WriteLine("Deneme4");
        }

        public sinifD()
        {
            sinifC sinifc = new sinifC();
            sinifc.method3();
        }
    }

Я хочу сделать это ниже:


    public  class sinifC
    {
       public  void method3()
        {
            Console.WriteLine("Deneme3");
        }
    }

   public class sinifD : sinifC
    {
        void method4()
        {
            Console.WriteLine("Deneme4");
        }


            sinifC sinifc = new sinifC();
            sinifc.method3();

    }

Ошибка: недопустимый токен '(' в объявлении члена класса, структуры или интерфейса

Ответы [ 4 ]

3 голосов
/ 28 мая 2010

не

        sinifC sinifc = new sinifC();
        sinifc.method3();

нужно быть внутри метода?

Кажется, вы хотите создать экземпляр объекта и вызвать его метод внутри тела класса, но вам нужно, чтобы это происходило внутри метода.

2 голосов
/ 28 мая 2010

Вам не нужно писать код в конструкторе, но вы должны написать код в каком-то методе. В настоящее время вы просто пишете код в любом месте вашего класса. Если вы не хотите создавать экземпляр своего класса D, чтобы сделать это, вы можете создать статический метод в своем классе D, который создает экземпляр класса C (у вас может даже быть статический конструктор).

1 голос
/ 28 мая 2010

Вам не нужно создавать экземпляр sinifC - вы используете наследование, расширяя его.

class Program
{
    static void Main(string[] args)
    {
        sinifD s = new sinifD();

        // call method3 on sinfiD
        s.method3();
    }
}

public  class sinifC
{
   public  void method3()
    {
        Console.WriteLine("Deneme3");
    }
}

public class sinifD : sinifC
{
    // sinifD inheritrs mehtod3 from sinifD

    // method 4 is protected, so only classes in the class hierachy see that method
    void method4()
    {
        Console.WriteLine("Deneme4");
    }
}
1 голос
/ 28 мая 2010

Единственными допустимыми инструкциями в теле класса являются объявления (необязательно включая инициализацию для полей). Вызов метода здесь не является допустимой инструкцией, он должен быть внутри метода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...