Книга: C# для профессионалов. Том II

Методы класса Employee

Методы класса Employee

В классе Employee существуют два метода — GetMonthlySalary() и ToString().

GetMonthlySalary() не требует комментариев, так как большая часть соответствующего синтаксиса C# уже была рассмотрена. Берется зарплата, делится на 12 для преобразования из годовой в месячную зарплату, и возвращается результат:

public decimal GetMonthlyPayment() {
 return salary/12;
}

Единственным новым элементом синтаксиса здесь является инструкция return. В VB возвращаемое из метода значение определяют, задавая требуемое значение фиктивной переменной, которая имеет такое же имя, как и функция

GetMonthlyPayment = mCurSalary/12

В C# тот же самый результат получают, добавляя параметр в инструкцию return (без скобок). Также return в C# определяет, что происходит выход их функции, поэтому инструкция C#:

return salary/12;

эквивалентна в действительности следующему коду VB:

GetMonthlyPayment = mCurSalary/12
Exit Function

Метод ToString() более интересен. В большинстве случаев при написании класса C# будет полезным создание метода ToString(), который может использоваться для получения быстрого просмотра содержимого объекта. Как упоминалось ранее, метод ToString() уже доступен, так как все классы наследуют его от System.Object. Однако версия в System.Object выводит только имя класса и никаких данных из экземпляра класса. Компания Microsoft уже переопределила этот метод для всех числовых типов данных (int, float и т.д.), чтобы выводить реальные значения переменных, и нелишне будет сделать то же самое для собственных классов программиста. В любом случае это может быть полезно для просмотра содержимого объекта во время отладки:

publiс override string ToString() {
 return Name: " + name + ", Salary: $" + salary.ToString();
}

Эта переопределенная версия выводит имя и зарплату сотрудника. Новым элементом синтаксиса является то, что метод специально объявлен как override. C# требует, чтобы переопределяемые версии методов помечались явно, и будет инициировать ошибку компиляции, если этого не сделать. Это исключает риск любых потенциальных ошибок, когда, например, мы можем случайно переопределить метод без его реализации, возможно не зная, что метод с таким именем уже присутствует в базовом классе.

Мы завершили пример класса Employee как в VB, так и в C#, и до сих пор, хотя имеются некоторые неровности в создании и инициализации экземпляра Employee в версии VB, оба языка справились достаточно хорошо с требованиями. Однако одна из целей этого приложения состоит в том, чтобы показать, почему C# может быть в отдельных ситуациях значительно более мощным, чем VB6. Мы будем добавлять некоторые свойства в версию C# нашего примера, которые оставят VB далеко позади. Начнем со статических полей и свойств.

Оглавление книги


Генерация: 1.762. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз