Герберт Шилдт - C# 4.0: полное руководство
- Название:C# 4.0: полное руководство
- Автор:
- Жанр:
- Издательство:ООО И.Д. Вильямс
- Год:2011
- Город:Москва -- Киев
- ISBN:978-5-8459-1684-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Герберт Шилдт - C# 4.0: полное руководство краткое содержание
В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.
Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию
C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Обратите также внимание на то, что теперь метод AreaPerPerson()
имеет возвращаемый тип int
. Это означает, что он будет возвращать целое значение вызывающей части программы. Тип, возвращаемый методом, имеет очень большое значение, поскольку тип данных, возвращаемых методом, должен быть совместим с возвращаемым типом, указанным в методе. Так, если метод должен возвращать данные типа double, то в нем следует непременно указать возвращаемый тип double.
Несмотря на то что приведенная выше программа верна, она, тем не менее, написана не совсем эффективно. В частности, в ней можно вполне обойтись без переменной areaPP
, указав вызов метода AreaPerPerson()
непосредственно в операторе, содержащем вызов метода WriteLine(),
как показано ниже.
Console.WriteLine("Дом имеет: " +
house.Floors + " этажа " + house.Occupants + " жильца " + house.Area +
" кв. футов общей площади, из них " + house.AreaPerPerson() +
" приходится на одного человека");
В данном случае при выполнении оператора, содержащего вызов метода WriteLine(),
автоматически вызывается метод house.AreaPerPerson(),
а возвращаемое им значение передается методу WriteLine().
Кроме того, вызов метода AreaPerPerson()
можно использовать всякий раз, когда требуется получить величину площади на одного человека для конкретного объекта типа Building
. Например, в приведенном ниже операторе сравниваются величины площади на одного человека для двух зданий.
if(b1.AreaPerPerson() > b2.AreaPerPerson())
Console.WriteLine("В здании b1 больше места для каждого человека");
При вызове метода ему можно передать одно или несколько значений. Значение, передаваемое методу, называется аргументом. А переменная, получающая аргумент, называется формальным параметром , или просто параметром. Параметры объявляются в скобках после имени метода. Синтаксис объявления параметров такой же, как и у переменных. А областью действия параметров является тело метода. За исключением особых случаев передачи аргументов методу, параметры действуют так же, как и любые другие переменные.
Ниже приведен пример программы, в котором демонстрируется применение параметра. В классе ChkNum
используется метод IsPrime(),
который возвращает значение true
, если ему передается значение, являющееся простым числом. В противном случае он возвращает значение false.
Следовательно, возвращаемым для метода IsPrime()
является тип bool.
// Простой пример применения параметра.
using System;
class ChkNum {
// Возвратить значение true, если значение
// параметра х окажется простым числом,
public bool IsPrime(int x) {
if (x <= 1) return false;
for (int i=2; i <= x/i; i++)
if ( (x % i) == 0) return false;
return true;
}
}
class ParmDemo {
static void Main() {
ChkNum ob = new ChkNum();
for (int i=2; i < 10; i++)
if(ob.IsPrime(i))
Console.WriteLine(i + " простое число.");
else
Console.WriteLine(i + " непростое число.");
}
}
Вот какой результат дает выполнение этой программы.
2 простое число.
3 простое число.
4 непростое число.
5 простое число.
6 непростое число.
7 простое число.
8 непростое число.
9 непростое число.
В данной программе метод IsPrime()
вызывается восемь раз, и каждый раз ему передается другое значение. Проанализируем этот процесс более подробно. Прежде всего обратите внимание на то, как вызывается метод IsPrime().
Его аргумент указывается в скобках. Когда метод IsPrime()
вызывается в первый раз, ему передается значение 2. Следовательно, когда метод IsPrime()
начинает выполняться, его параметр х принимает значение 2. При втором вызове этого метода его параметр х принимает значение 3, при третьем вызове — значение 4 и т.д. Таким образом, значение, передаваемое методу IsPrime()
в качестве аргумента при его вызове, представляет собой значение, которое принимает его параметр х.
У метода может быть не только один, но и несколько параметров. Каждый его параметр объявляется, отделяясь от другого запятой. В качестве примера ниже приведен класс ChkNum
, который расширен дополнительным методом LeastComFactor(),
возвращающим наименьший общий множитель двух его аргументов. Иными словами, этот метод возвращает наименьшее число, на которое оба его аргумента делятся нацело.
// Добавить метод, принимающий два аргумента.
using System;
class ChkNum {
// Возвратить значение true, если значение
// параметра х окажется простым числом,
public bool IsPrime(int x) {
if (x <= 1) return false;
for (int i = 2; i <= x / i; i++) if ((x % i) == 0) return false;
return true;
}
// Возвратить наименьший общий множитель,
public int LeastComFactor(int a, int b) {
int max;
if (IsPrime(a) || IsPrime(b)) return 1;
max = a < b ? a : b;
for (int i = 2; i <= max / 2; i++)
if (((a % i) == 0) && ((b % i) == 0)) return i;
return 1;
}
}
class ParmDemo {
static void Main() {
ChkNum ob = new ChkNum();
int a, b;
for (int i = 2; i < 10; i++)
if (ob.IsPrime(i))
Console.WriteLine(i + " простое число.");
else
Console.WriteLine(i + " непростое число.");
a = 7;
b = 8;
Console.WriteLine("Наименьший общий множитель чисел "
+ a + " и " + b + " равен "
+ ob.LeastComFactor(a, b));
a = 100;
b = 8;
Console.WriteLine("Наименьший общий множитель чисел "
+ a + " и " + b + " равен "
+ ob.LeastComFactor(a, b));
a = 100;
b = 75;
Console.WriteLine("Наименьший общий множитель чисел "
+ a + " и " + b + " равен "
+ ob.LeastComFactor(a, b));
}
}
Обратите внимание на следующее: когда вызывается метод LeastComFactor(),
его аргументы также разделяются запятыми. Ниже приведен результат выполнения данной программы.
Интервал:
Закладка: