2013-02-19 2 views
2

Я читал о конструкторах классов в C#. В примерах показаны перегруженные класс-конструкторы. И у всех из них нет ключевого слова void, и у них нет значения возврата.Являются ли конструкторы классов недействительными по умолчанию?

например.

public Class myClass 
{ 
    public myClass() 
    { 

    } 

    public myClass(int id) 
    { 

    } 
//other class memeber go here... 
} 

1) Так это правильно сказать, C# Конструкторы void по умолчанию?

2) То же самое относится и к Java?

+2

Для типов возврата конструктора, см: C# http://stackoverflow.com/questions/8893959/what-is-the-return-type-of-a-constructor-in-c java http://stackoverflow.com/questions/8868117/what-is-the-return-type-of-a-constructor-in-java – mcalex

+0

@mcalex спасибо. Это полезно :)> В соответствии с Спецификацией языка C# 4.0, раздел 1.6: 'Экземпляры классов создаются с использованием нового оператора, который выделяет память для нового экземпляра, вызывает конструктор для инициализации экземпляра и возвращает ссылку на instance.' – aspiring

ответ

2

Нет, они являются конструкторами, если что-либо, вы можете думать о них как о возврате объекта класса, из которого они взяты. Но они не являются обычным методом/функциями.

+0

Для других методов, если у нас нет модификатора void, мы должны что-то вернуть. Но конструктор класса (методы) не соответствует той же норме, хотя он возвращает объект класса внутри, а скорее возвращает процесс обернуто/скрыто внутри экземпляра. Тогда я на правильном пути? Спасибо :) – aspiring

+1

ну, ключевое слово new выделяет память для объекта, конструктор берет эту память и ... строит объект, а затем возвращает построенный экземпляр. поэтому var x = new myClass («материал»); –

+0

Отлично @ Keith. Я понял. – aspiring

2

Нет Конструкторы неявно возвращают тип класса, такой же, как и java.

+0

Спасибо @karthi. – aspiring

0

Конструкторы не имеют типа возврата и ничего не возвращают, это не метод. От C# спецификации языка 4.0:

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

атрибутов выбрать конструктор-модификаторы выбирают конструктор-описатель конструктор тело

Конструктор объявляются как метод без возвращаемого типа и же имя, содержащего класса

Возврат товара здесь нет.

Конструктор вызывается через оператор new, который является тем, который возвращает экземпляр объекта.

+0

Я думаю, что конструкторы вызываются через() после имени класса. не новое ключевое слово – Mohammadreza

Смежные вопросы