Иллюстрированный самоучитель по Visual Studio .NET

Введение

Что-то от Java или Visual Basic? Нет, это – managed C++!

public _gc
class Man // Эта строка ничем не отличается от C++
{
private:
//=== String – новый мощный класс для работы с текстом
String *m_Name;
// Имя
int m_Age;
// Возраст
public:
//==== Конструкторы
Man ()
{
m_Name = S "Dummy";
m_Age = 0;
}
Man (String* n, <strong>int</strong> a)
{
m_Name = n;
m Age = a;
}
//==== Два метода доступа к закрытым данным
String* GetName()
{
return m_Name;
}
int GetAge ()
{
return m_Age;
}
};

Теперь опробуйте работу нового управляемого типа данных – объектов класса Man, в условиях управляемого кода.

void main ()
{
//=== Создаем двухмерный массив указателей
//=== на объекты класса Man
Man * men[,] = new Man *[2, 2];
//=== Как вам нравится новый (управляемый) синтаксис?
//=== Инициализируем один элемент массива
men [1.1] = new ManC'Alex Black ",54);
<strong>//===</strong> Мы можем задавать вопросы объекту men
Console::WriteLine (men › Count);
Console::WriteLine (men › Rank);
Console::WriteLine (men[l, 1] › GetName ());
Console::WriteLine (men [1, 1] › GetAge ());
}

Программа выведет следующий текст:

4
2
Alex Black
54

Пока мы видим только новый синтаксис и возможность задавать вопросы динамическому массиву. Но теперь попробуйте вставить код с ошибками алгоритмического плана и запустите на выполнение.

for (int i=0; i<5; i++)
Console::WriteLine(men[i,i] › GetName());

Если вы на предложение отладить код ответите отказом, то в окне будет выведен такой текст:

Exception occurred: System.NullReferenceException:
Attempted to dereference a null object reference.
at Man.GetName() in с:\man\man.cpp:line 27
at main() in с:\man\man.cpp:line 61

Такое поведение программы в ситуации с типичной ошибкой разработчика, безусловно, следует признать более надежным. Оно даст возможность значительно сэкономить наше время в будущем. Отметьте, что если вы не хотите пользоваться услугами автоматического сборщика мусора (_gс), то не должны делать особое заявление по этому поводу.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.