Симон Робинсон - C# для профессионалов. Том II

Тут можно читать онлайн Симон Робинсон - C# для профессионалов. Том II - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Лори, год 2003. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C# для профессионалов. Том II
  • Автор:
  • Жанр:
  • Издательство:
    Лори
  • Год:
    2003
  • Город:
    Москва
  • ISBN:
    5-85582-187-0
  • Рейтинг:
    4.88/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Симон Робинсон - C# для профессионалов. Том II краткое содержание

C# для профессионалов. Том II - описание и краткое содержание, автор Симон Робинсон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
C# для профессионалов

Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.

В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.

Для кого предназначена эта книга

Эта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.

Основные темы книги

• Все особенности языка C#

• C# и объектно-ориентированное программирование

• Приложения и службы Windows

• Создание web-страниц и web-служб с помощью ASP NET

• Сборки .NET

• Доступ к данным при помощи ADO NET

• Создание распределённых приложений с помощью NET Remoting

• Интеграция с COM, COM+ и службой Active Directory

C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)

C# для профессионалов. Том II - читать книгу онлайн бесплатно, автор Симон Робинсон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

public class Man {

int arms, legs;

string name;

public Man(){}

public int Arms {

set {

arms = value;

}

get {

return arms;

}

}

public string Name {

set {

name = value;

}

get {

return name;

}

}

public int Legs {

set {

legs = value;

}

get {

return legs;

}

}

}

Как можно видеть из приведенного примера, класс Manимеет три свойства: можно задать или извлечь Legs, Arms, Name. Ниже представлен листинг класса Car:

public class Car {

int wheels, doors, headlights;

public Car(int wheels, int doors, int headlights) {

this.wheels = wheels;

this.doors = doors;

this.headlights = headlights;

}

}

He существует на самом деле определенных правил о том, что включать в реализацию специального преобразования. Необходимо, однако, сопоставлять как можно больше пар полей данных между двумя операндами. В случае данного примера поле Car.wheelбудет сопоставлено с Man.legs, а поле Car.doorsс Man.arms. Не существует поля в Car, которое представляет что-нибудь похожее на Man.Name, но это не мешает использовать его. Можно, скажем, сопоставить Car.headlightsс длиной строки, которая хранится в Man.name. Любая реализация, которая имеет смысл для программиста, будет приемлема. В этом случае Man.nameне сопоставляется с Car.headlights, вместо этого для headlightsжестко кодируется 2, когда делается преобразование, и полностью отбрасывается Man.name. Следующий код содержит модификацию класса Car:

public class Car {

int wheels, doors, headlights;

public Car(int wheels, int doors, int headlights) {

this.wheels = wheels;

this.doors = doors;

this.headlight = headlights;

}

public static implicit operator Car(Man man) {

return new Car(man.Legs, man.Arms, 2);

}

public static explicit operator(Car car) {

Man man = new Man();

man.Arms = car.doors;

man.Legs = car.wheels;

man.Name = "john";

return man;

}

}

Мы добавим также переопределенные версии для методов ToString()обоих классов, чтобы вывести содержимое объекта Car. Это делается так:

// для Man.cs

public override string ToString() {

return "[arms:" + arms + "|legs:" + legs + "|name:" + name + "]";

}

// для Car.cs

public override string ToString() {

return "[wheels:" + wheels + "|doors:" + doors + "|headlights:" + headlights + "]";

}

Листинг кода ниже показывает использование специального преобразования:

// BoxEx.cs

public class OverflowEX {

public static void Main(String[] args) {

Car car = new Car (4, 5, 2);

Man man = (Man) car; // использует явное специальное преобразование

Console.WriteLine("Man - ");

Console.WriteLine(man);

Console.WriteLine();

Car car2 = man; // использует неявное специальное преобразование

Console.WriteLine("Car - ");

Console.WriteLine(car2);

}

}

Компиляция и выполнение этого кода создает показанные ниже результаты:

Man -

[arms:5|legs:4|name:john]

Car -

[wheels:4|doors:5|headlights:2]

Перезагрузка

В начале важно отметить, что перезагрузка операторов не определена в CLS. Однако CLS обращается к ней, потому что языки, обеспечивающие ее функциональность, делают это способом, который могут понять другие языки. Таким образом, языки, которые не поддерживают перезагрузку операторов, все-таки имеют доступ к базовой функциональности. Java является примером языка, который не поддерживает перезагрузку операторов, — ни одна из концепций, рассмотренных в этом разделе, не может ее использовать. Спецификация среды .NET включает ряд рекомендаций для проведения перезагрузки операторов.

□ Определите операторы на типах данных значений, которые логически являются встроенным типом языка (таким, как System.Decimal).

□ Используйте методы перезагрузки операторов, включающие только тот класс, на котором определены методы.

□ Применяйте соглашения об именах и сигнатурах, описанные в CLS.

□ Перезагрузка операторов полезна в случаях, где точно известно, каким будет результат операции.

□ Предоставьте альтернативные сигнатуры. Не все языки поддерживают вызов перезагруженных операторов. Поэтому постарайтесь всегда включать вторичный метод с подходящим специфическим для домена именем, который имеет эквивалентную функциональность.

Перезагрузка операторов связана как с определенными пользователем преобразованиями, так и с типом данных, а не с экземпляром. Это означает, что она связана со всем типом данных, а не с каким-то одним экземпляром объекта, то есть операция всегда должна быть staticи public.

В нижеследующем примере создается тип данных значения Wheels, который может выполнять перезагруженное сложение с самим собой. Можно отметить частое использование комментариев и тегов типа XML внутри комментариев, они нужны для документации. Документация C# будет обсуждаться ниже в этом приложении:

public struct Wheels {

int wheel;

// загрузить начальное значение в wheel

private Wheels(int initVal); {

wheel = initVal;

}

///



/// показывает внутреннее число wheels

///

internal int Number {

set {

wheel = value;

}

get {

return wheel;

}

}

///



/// возвращает внутреннее число. Если этот метод

/// не переопределен, то возвращаемой строкой будет тип Two.Wheels.

/// </ summary >

///

public override string ToString() {

return wheel.ToString();

}

/// < summary>

/// выполнить операцию сложения на двух wheels

///

///

///

///

public static Wheels operator + (Wheels w1, Wheels w2) {

w1.wheel += w2.wheel; return w1;

}

///



/// предоставляет альтернативную функциональность сложения.

/// отметим, что вторая альтернатива операции сложения

/// находится не в этой структуре, а в классе car

///

///

///

public Wheels AddWeels(Wheels w) {

this.wheel += w.wheel;

return this;

}

///



/// поэтому целые литералы можно неявно преобразовать в wheel

///

///

///

public static implicit operator Wheels(int x) {

return new Wheels(x);

}

}

Здесь выделим использование метода AddWheel(), что удовлетворяет рекомендациям об альтернативных сигнатурах. Язык CLS, который не поддерживает перезагрузку операторов, может получить доступ к той же функциональности сложения с помощью этого метода. Фрагмент кода ниже показывает, как может использоваться этот тип данных значения:

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

Интервал:

Закладка:

Сделать


Симон Робинсон читать все книги автора по порядку

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




C# для профессионалов. Том II отзывы


Отзывы читателей о книге C# для профессионалов. Том II, автор: Симон Робинсон. Читайте комментарии и мнения людей о произведении.


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

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