Герберт Шилдт - 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: полное руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Console.Write("Обратный порядок следования: ");
foreach(int i in nums)
Console.Write (i + " ");
Console.WriteLine();
// Обратить часть массива.
Array.Reverse(nums, 1, 3);
// Отобразить обратный порядок следования.
Console.Write("Частично обращенный порядок следования: ");
foreach(int i in nums)
Console.Write(i + " ");
Console.WriteLine();
}
}
Эта программа дает следующий результат.
Исходный порядок следования: 1 2 3 4 5
Обратный порядок следования: 5 4 3 2 1
Частично обращенный порядок следования: 5 2 3 4 1
Полное или частичное копирование одного массива в другой — это еще одна весьма распространенная операция с массивами. Для копирования содержимого массива служит метод Сору()
. В зависимости от его варианта копирование элементов исходного массива осуществляется в начало или в средину целевого массива. Применение метода Сору()
демонстрируется в приведенном ниже примере программы.
// Скопировать массив.
using System;
class CopyDemo {
static void Main() {
int[] source = { 1, 2, 3, 4, 5 };
int[] target = { 11, 12, 13, 14, 15 };
int[] source2 = { -1, -2, -3, -4, -5 };
// Отобразить исходный массив.
Console.Write("Исходный массив: ");
foreach (int i in source)
Console.Write(i + " ");
Console.WriteLine();
// Отобразить исходное содержимое целевого массива.
Console.Write("Исходное содержимое целевого массива: ");
foreach (int i in target)
Console.Write(i +" ");
Console.WriteLine();
// Скопировать весь массив.
Array.Copy(source, target, source.Length);
// Отобразить копию.
Console.Write("Целевой массив после копирования: ");
foreach (int i in target)
Console.Write(i + " ");
Console.WriteLine();
// Скопировать в средину целевого массива.
Array.Copy(source2, 2, target, 3, 2);
// Отобразить копию.
Console.Write("Целевой массив после частичного копирования: ");
foreach (int i in target)
Console.Write(i + " ");
Console.WriteLine();
}
}
Выполнение этой программы дает следующий результат.
Исходный массив: 1 2 3 4 5
Исходное содержимое целевого массива: 11 12 13 14 15
Целевой массив после копирования: 1 2 3 4 5
Целевой массив после частичного копирования: 1 2 3 -3 -4
Предикат представляет собой делегат типа System.Predicate
, возвращающий логическое значение true
или false
в зависимости от некоторого условия. Он объявляется следующим образом.
public delegate bool Predicate (T obj)
Объект, проверяемый по заданному условию, передается в качестве параметра obj
. Если объект obj
удовлетворяет заданному условию, то предикат должен возвратить логическое значение true
, в противном случае — логическое значение false
. Предикаты используются в ряде методов класса Array
, включая: Exists()
, Find()
, Findlndex()
и FindAll()
.
В приведенном ниже примере программы демонстрируется применение предиката с целью определить, содержится ли в целочисленном массиве отрицательное значение. Если такое значение обнаруживается, то данная программа извлекает первое отрицательное значение, найденное в массиве. Для этого в ней используются методы Exists()
и Find()
.
//Подемострировать применеие предикатного делегата
using System;
class PredDemo {
// Предикатный метод, возвращающий логическое значение true,
// если значение переменной v оказывается отрицательным,
static bool IsNeg(int v) {
if (v < 0) return true;
return false;
}
static void Main() {
int[] nums = { 1, 4, -1, 5, -9 };
Console.Write("Содержимое массива nums: ");
foreach (int i in nums)
Console.Write(i + " ");
Console.WriteLine();
// Сначала проверить, содержит ли массив nums отрицательное значение,
if (Array.Exists(nums, PredDemo.IsNeg)) {
Console.WriteLine("Массив nums содержит отрицательное значение.");
// Затем найти первое отрицательное значение" в массиве,
int x = Array.Find(nums, PredDemo.IsNeg);
Console.WriteLine("Первое отрицательное значение: " + x);
}
else
Console.WriteLine("В массиве nums отсутствуют отрицательные значения.");
}
}
Эта программа дает следующий результат.
Содержимое массива nums: 1 4 -1 5 -9
Массив nums содержит отрицательное значение.
Первое отрицательное значение: -1
В данном примере программы в качестве предиката методам Exists()
и Find()
передается метод IsNeg()
. Обратите внимание на следующее объявление метода IsNeg()
.
static bool IsNeg (int v) {
Методы Exists()
и Find()
автоматически и по порядку передают элементы массива переменной v. Следовательно, после каждого вызова метода IsNeg()
переменная v будет содержать следующий элемент массива.
Делегат Action
применяется в методе Array.ForEach()
для выполнения заданного действия над каждым элементом массива. Существуют разные формы делегата Action
, отличающиеся числом параметров типа. Ниже приведена одна из таких форм.
public delegate void Action (T obj)
В этой форме объект, над которым должно выполняться действие, передается в качестве параметра obj
. Когда же эта форма делегата Action
применяется в методе Array.ForEach()
, то каждый элемент массива передается по порядку объекту obj
.
Следовательно, используя делегат Action
и метод ForEach()
, можно в одном операторе выполнить заданную операцию над целым массивом.
В приведенном ниже примере программы демонстрируется применение делегата Action
и метода ForEach()
. Сначала в ней создается массив объектов класса MyClass
, а затем используется метод Show()
для отображения значений, извлекаемых из этого массива. Далее эти значения становятся отрицательными с помощью метода Neg()
. И наконец, метод Show()
используется еще раз для отображения отрицательных значений. Все эти операции выполняются посредством вызовов метода ForEach()
.
Интервал:
Закладка: