Конструктор по-умолчанию с параметрами
От: Аноним  
Дата: 21.02.11 11:38
Оценка:
Может ли конструктор по-умолчанию быть с параметрами, для которых определены значения по-умолчанию. Т.е. будет ли считаться такой конструктор конструктором по-умолчанию?

class Test {
   public Test(int a=5){

   }
}


Вопрос возник на основе этого вопроса в тесте (несколько верных ответов, нужно обозначить все):

Which of the following are true for C#?

  1. Default constructor is one that does not have any arguments
  2. Default constructor can take arguments but they must have default values specified for them
  3. The compiler automatically generates a default constructor for a user defined class
Re: Конструктор по-умолчанию с параметрами
От: QrystaL Украина  
Дата: 21.02.11 12:01
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Может ли конструктор по-умолчанию быть с параметрами, для которых определены значения по-умолчанию.


Нет, конструктор по-умолчанию — это конструктор без параметров.

А>Вопрос возник на основе этого вопроса в тесте (несколько верных ответов, нужно обозначить все):


А>Which of the following are true for C#?


А>

    А>
  1. Default constructor is one that does not have any arguments
    А>
  2. Default constructor can take arguments but they must have default values specified for them
    А>
  3. The compiler automatically generates a default constructor for a user defined class
    А>

Верный только 1-й
Re[2]: Конструктор по-умолчанию с параметрами
От: Аноним  
Дата: 21.02.11 12:26
Оценка:
Здравствуйте, QrystaL, Вы писали:

QL>Нет, конструктор по-умолчанию — это конструктор без параметров.

Т.е. вы хотите сказать, что если задать конструктор с параметрами, для которых установлены значения по-умолчанию, то компилятор создаст автоматически еще и конструктор без параметров, который и будет конструктором по-умолчанию?
Re[3]: Конструктор по-умолчанию с параметрами
От: QrystaL Украина  
Дата: 21.02.11 12:37
Оценка:
QL>>Нет, конструктор по-умолчанию — это конструктор без параметров.
А>Т.е. вы хотите сказать, что если задать конструктор с параметрами, для которых установлены значения по-умолчанию, то компилятор создаст автоматически еще и конструктор без параметров, который и будет конструктором по-умолчанию?

Нет, конструктор по-умолчанию создается автоматически только в том случае, если в классе нет ни одного конструктора.
Re[2]: Конструктор по-умолчанию с параметрами
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 21.02.11 13:20
Оценка:
Здравствуйте, QrystaL, Вы писали:

А>>Может ли конструктор по-умолчанию быть с параметрами, для которых определены значения по-умолчанию.

QL>Нет, конструктор по-умолчанию — это конструктор без параметров.

Либо с единственным 'params' параметром
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Re[3]: Конструктор по-умолчанию с параметрами
От: QrystaL Украина  
Дата: 21.02.11 13:24
Оценка:
X>Либо с единственным 'params' параметром

Не слышал про такое ) Где почитать?
Re[3]: Конструктор по-умолчанию с параметрами
От: 1stein Украина  
Дата: 21.02.11 13:36
Оценка:
Здравствуйте, xvost, Вы писали:

X>Здравствуйте, QrystaL, Вы писали:


А>>>Может ли конструктор по-умолчанию быть с параметрами, для которых определены значения по-умолчанию.

QL>>Нет, конструктор по-умолчанию — это конструктор без параметров.

X>Либо с единственным 'params' параметром


Тогда почему это компилится

    public class MyClass
    {
        public MyClass()
        {

        }

        public MyClass(params object[] args)
        {
            
        }
    }
Will code C# for food
Re[4]: Конструктор по-умолчанию с параметрами
От: Аноним  
Дата: 21.02.11 13:44
Оценка:
Здравствуйте, 1stein, Вы писали:

1>Тогда почему это компилится

Да там все ясно, мы в любом случае должны передать параметром даже пустой массив.

А почему вот это компилируется?

        class Test
        {
            public Test(int a=5)
            {
                Console.WriteLine("param");
            }

            public Test()
            {
                Console.WriteLine("default");
            }
        }

Мне вот непонятно. Ведь тут есть неоднозначность вызова.
Re[5]: Конструктор по-умолчанию с параметрами
От: adontz Грузия http://adontz.wordpress.com/
Дата: 21.02.11 13:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Мне вот непонятно. Ведь тут есть неоднозначность вызова.


Читай стандарт языка, её нет.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Конструктор по-умолчанию с параметрами
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 21.02.11 15:28
Оценка:
Здравствуйте, 1stein, Вы писали:

1>Тогда почему это компилится


Потому что сигнатуры разные.

Хочу отметить, что понятие "дефолтный конструктор" существует только в терминах языка C#
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.