Герберт Шилдт - C# 4.0: полное руководство

Тут можно читать онлайн Герберт Шилдт - C# 4.0: полное руководство - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство ООО И.Д. Вильямс, год 2011. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C# 4.0: полное руководство
  • Автор:
  • Жанр:
  • Издательство:
    ООО И.Д. Вильямс
  • Год:
    2011
  • Город:
    Москва -- Киев
  • ISBN:
    978-5-8459-1684-6
  • Рейтинг:
    3.93/5. Голосов: 141
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Герберт Шилдт - C# 4.0: полное руководство краткое содержание

C# 4.0: полное руководство - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.


Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок

C# 4.0: полное руководство - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

// Продемонстрировать применение метода ToString()

using System;

class MyClass {

static int count = 0;

int id;

public MyClass() {

id = count;

count++;

}

public override string ToString() {

return "Объект #" + id + " типа MyClass";

}

}

class Test {

static void Main() {

MyClass ob1 = new MyClass();

MyClass ob2 = new MyClass();

MyClass ob3 = new MyClass();

Console.WriteLine(ob1);

Console.WriteLine(ob2);

Console.WriteLine(ob3);

}

}

При выполнении этого кода получается следующий результат.

Объект #0 типа MyClass

Объект #1 типа MyClass

Объект #2 типа MyClass

Упаковка и распаковка

Как пояснялось выше, все типы в С#, включая и простые типы значений, являются производными от класса object. Следовательно, ссылкой типа objectможно воспользоваться для обращения к любому другому типу, в том числе и к типам значений. Когда ссылка на объект класса objectиспользуется для обращения к типу значения, то такой процесс называется упаковкой . Упаковка приводит к тому, что значение простого типа сохраняется в экземпляре объекта, т.е. "упаковывается" в объекте, который затем используется как и любой другой объект. Но в любом случае упаковка происходит автоматически. Для этого достаточно присвоить значение переменной ссылочного типа object, а об остальном позаботится компилятор С#.

Распаковка представляет собой процесс извлечения упакованного значения из объекта. Это делается с помощью явного приведения типа ссылки на объект класса objectк соответствующему типу значения. Попытка распаковать объект в другой тип может привести к ошибке во время выполнения.

Ниже приведен простой пример, демонстрирующий упаковку и распаковку.

// Простой пример упаковки и распаковки.

using System;

class BoxingDemo {

static void Main() {

int x;

object obj;

x = 10;

obj = x; // упаковать значение переменной х в объект

int у = (int)obj; // распаковать значение из объекта, доступного по

// ссылке obj, в переменную типа int

Console.WriteLine(у);

}

}

В этом примере кода выводится значение 10. Обратите внимание на то, что значение переменной х упаковывается в объект простым его присваиванием переменной obj, ссылающейся на этот объект. А затем это значение извлекается из объекта, доступного по его ссылке obj, и далее приводится к типу int.

Ниже приведен еще один, более интересный пример упаковки. В данном случае значение типа intпередается в качестве аргумента методу Sqr(), который, в свою очередь, принимает параметр типа object.

// Пример упаковки при передаче значения методу.

using System;

class BoxingDemo {

static void Main() {

int x;

x = 10;

Console.WriteLine("Значение x равно: " + x);

// значение переменной x автоматически упаковывается

// когда оно передается методу Sqr().

x = BoxingDemo.Sqr(x) ;

Console.WriteLine("Значение x в квадрате равно: " + x);

}

static int Sqr(object о) {

return (int)о * (int)о;

}

}

Вот к какому результату приводит выполнение этого кода.

Значение х равно: 10

Значение х в квадрате равно: 100

В данном примере значение переменной х автоматически упаковывается при передаче методу Sqr().

Упаковка и распаковка позволяют полностью унифицировать систему типов в С#. Благодаря тому что все типы являются производными от класса object, ссылка на значение любого типа может быть просто присвоена переменной ссылочного типа object, а все остальное возьмут на себя упаковка и распаковка. Более того, методы класса objectоказываются доступными всем типам, поскольку они являются производными от этого класса. В качестве примера рассмотрим довольно любопытную программу.

// Благодаря упаковке становится возможным вызов

//методов по значению!

using System;

class MethOnValue {

static void Main() {

Console.WriteLine(10.ToString() ) ;

}

}

В результате выполнения этой программы выводится значение 10. Дело в том, что метод ToString() возвращает строковое представление объекта, для которого он вызывается. В данном случае строковым представлением значения 10 как вызывающего объекта является само значение 10!

Класс object как универсальный тип данных

Если objectявляется базовым классом для всех остальных типов и упаковка значений простых типов происходит автоматически, то класс object можно вполне использовать в качестве "универсального" типа данных. Для примера рассмотрим программу, в которой сначала создается массив типа object, элементам которого затем присваиваются значения различных типов данных.

// Использовать класс object для создания массива "обобщенного" типа.

using System;

class GenericDemo {

static void Main() {

object[] ga = new object[10];

// Сохранить целые значения,

for (int i=0; i < 3; i++) ga[i] = i;

// сохранить значения типа double

for (int i=3; i < 6; i++)

ga[i] =(double) i / 2;

// сохранить две строки, а также значения типа bool и char

ga[6] = "Привет";

ga[7] = true;

ga[8] = 'X';

ga[9] = "Конец";

for(int i = 0; i < ga.Length; i++)

Console.WriteLine("ga[" + i + "]: " + ga[i] + " ");

}

}

Выполнение этой программы приводит к следующему результату.

ga[0] : 0

ga[1] : 1

ga[2] : 2

ga[3] : 1.5

ga[4] : 2

ga[5] : 2.5

ga[6] : Привет

ga[7] : True

ga[8] : X

ga[9] : Конец

Как показывает данный пример, по ссылке на объект класса objectможно обращаться к данным любого типа, поскольку в переменной ссылочного типа objectдопускается хранить ссылку на данные всех остальных типов. Следовательно, в массиве типа objectиз рассматриваемого здесь примера можно сохранить данные практически любого типа. В развитие этой идеи можно было бы, например, без особого труда создать класс стека со ссылками на объекты класса object. Это позволило бы хранить в стеке данные любого типа.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0: полное руководство отзывы


Отзывы читателей о книге C# 4.0: полное руководство, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x