Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 16:48   #1
fikret123
Пользователь
 
Регистрация: 16.03.2008
Сообщений: 26
По умолчанию Разница в присвоении начальных значений

В чем разница между инициализацией при объявлении и в конструкторе?

Код:
class A
{
private int a = 456;
}
и
Код:
class A
{
private int a;
public A()
{
a = 456;
}
}
fikret123 вне форума Ответить с цитированием
Старый 26.02.2011, 16:58   #2
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

По-моему, первое — аналог списка инициализации в C++, т.е. выполняется перед основным телом конструктора и позволяет инциализировать константные поля.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 26.02.2011, 17:09   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
When an object is instantiated, initialization takes place in the following order:
1. From subclass to base class:
a. Fields are initialized.
b. Arguments to base-class constructor calls are evaluated.
2. From base class to subclass:
a. Constructor bodies execute.

The following code demonstrates:

Код:
public class B
{
  int x = 0; // Executes 3rd
  public B (int x)
  {
  ... // Executes 4th
  }
}

public class D : B
{
  int y = 0; // Executes 1st
  public D (int x)
    : base (x + 1) // Executes 2nd
  {
    ... // Executes 5th
  }
}
как-то так.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 26.02.2011, 17:14   #4
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Вот, я правильно сказал .

Алсо про константные поля не стоит забывать. Их внутри конструктора не инициализировать, правильно ведь?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 26.02.2011, 17:26   #5
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 534
По умолчанию

Правильно )

Еще есть readonly поля - их можно в конструкторе заполнять, а менять уже нигде нельзя, тоже константы по сути
m0nax вне форума Ответить с цитированием
Старый 26.02.2011, 17:51   #6
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Спасибо. Вот так и произошло моё знакомство с C#.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление начальных пробелов на С Corpinccom Общие вопросы C/C++ 8 23.07.2010 00:53
си++ удаление начальных пробелов Bonne Помощь студентам 1 17.04.2010 18:05
при присвоении ADOQuery.SQL.Text значения DBLookupComboBox.KeyValue возникает ошибка namazi74 БД в Delphi 1 10.04.2010 07:20
Ошибка при присвоении tStringList Altera Общие вопросы Delphi 16 24.07.2009 22:08
Ввод начальных данных из командной строки Bounefarte Помощь студентам 5 26.08.2007 12:49