в окне выведены два числа,
}
Запустите проект и убедитесь в том, что в окне выведены два числа, 42 и 1. Первое число является случайно выбранным размером массива (managed), а второе — рангом массива, то есть его размерностью (одномерный массив). Для того чтобы чуть-чуть глубже проникнуть в тайны управляемого кода и данных, дополните тестовую программу кодами нового управляемого класса Man. Вставьте следующие коды до функции main.
Что-то от 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,
int 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);
//===Мы можем задавать вопросы объекту 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с), то не должны делать особое заявление по этому поводу.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий