Какова функция ключевого слова this в конструкторе? - PullRequest
15 голосов
/ 13 апреля 2011

Я только что посмотрел пример кода из MSDN и наткнулся на:

namespace IListSourceCS
{
    public class Employee : BusinessObjectBase
    {
        private string      _id;
        private string      _name;
        private Decimal     parkingId;

        public Employee() : this(string.Empty, 0) {} // <<--- WHAT IS THIS???
        public Employee(string name) : this(name, 0) {}

Ответы [ 4 ]

15 голосов
/ 13 апреля 2011

Вызывает другой конструктор в этом классе с этой подписью.Это способ реализации конструктора с точки зрения других конструкторов.base также может использоваться для вызова конструктора базового класса.Вы должны иметь конструктор подписи, который соответствует этому, чтобы он работал.

8 голосов
/ 13 апреля 2011

это позволяет вам вызывать другой конструктор класса Employee (current) с параметрами (string, int).

Это метод для инициализации объекта, известного как Конструкторная цепочка

3 голосов
/ 13 апреля 2011

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

FirstClass oTest1 = new FirstClass ();или FirstClass oTest1b = new FirstClass (2345);

ВТОРОЙ класс является производным от FirstClass.обратите внимание, что он также имеет несколько конструкторов, но один имеет два параметра ... Двухпараметрическая сигнатура вызывает конструктор "this ()" (из второго класса) ... который, в свою очередь, вызывает BASE CLASS (FirstClass) конструктор с целочисленным параметром ...

Таким образом, при создании классов, производных от других, вы можете ссылаться на его метод конструктора класса OWN, ИЛИ на его базовый класс ... Аналогично в коде, если вы ОБЗОРИТЕ метод, вы можете сделать что-то ДОПОЛНИТЕЛЬНО к методу BASE () ...

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

   public class FirstClass
   {
      int SomeValue;

      public FirstClass()
      { }

      public FirstClass( int SomeDefaultValue )
      {
         SomeValue = SomeDefaultValue;
      }
   }


   public class SecondClass : FirstClass
   {
      int AnotherValue;
      string Test;

      public SecondClass() : base( 123 )
      {  Test = "testing"; }

      public SecondClass( int ParmValue1, int ParmValue2 ) : this()
      {
         AnotherValue = ParmValue2;
      }
   }
0 голосов
/ 13 апреля 2011

A constructor - это специальный метод / функция, которая запускается для инициализации объекта, созданного на основе класса.Здесь вы запускаете вещи инициализации, так как установка значений по умолчанию инициализирует элементы всеми способами.

"this" - это специальное слово, которое указывает на тот самый объект, в котором вы находитесь. Смотрите на него как на ссылку объектов внутри самого объекта, используемого для доступа к внутренним методам и членам.

Проверьте следующие ссылки:

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