Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Описание статических элементов

Операторы преобразования

Ответственность за нарушение ОТ и ТБ

Лица, виновные в нарушении техники безопасности привлекаются к дисциплинарной, административной или уголовной ответственности.

 

В языке C# есть две формы операторов преобразования:

1. Неявное; при этом используется следующий синтаксис:

public static implicit operator <целев. тип>(<исх. тип> <имя>)

В этом случае преобразование выполняется при использовании объекта в выражении целевого типа.

2. Явное; при этом используется следующий синтаксис:

public static explicit operator <целев. тип>(<исх. тип> <имя>)

В этом случае преобразование выполняется при использовании приведения типов.

В обоих случаях происходит преобразование из исходного типа в целевой тип. Либо <целев. тип>, либо <исх. тип> должны совпадать с типом того класса, где выполняется перегрузка оператора.

Для конкретной пары исходного и целевого типов нельзя одновременно определить оператор как явного, так и неявного преобразования.

Дополним класс Complex двумя перегруженными операторами преобразования:

class Complex

{

...

//преобразование в Complex вещественного числа

public static implicit operator Complex (double a)

{

return new Complex(a, 0);

}

//преобразование типа Complex в вещественное число

 

public static explicit operator double (Complex a)

{

return Math.Sqrt(a.re * a.re + a.im * a.im);

}

}

Пример преобразования типов:

Complex a = new Complex(3, 4);

double x;

x = (double) a; //Выполняем явное приведение типов

Console.WriteLine(x); //Выводит 5

double y = 10;

a = y; //Выполняем неявное приведение типов

a.Print(); //Выводит 10 + 0*j

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

Например,

Complex a=new Complex();

Complex b=new Complex();

a.Re=1;

b.Re=2;

Поля re для объектов а и b будут хранить разные значения.

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

Для того чтобы объявить статический член класса, используется ключевое слово static.

Например, можно описать статическое поле для хранения количества ненулевых экземпляров класса:

class Complex

{

...

protected static int amount = 0;

public static void PrintAmount()

{

System.Console.WriteLine(”Число ненулевых объектов

класса Complex: ” + amount;

}

Complex(double re, double im)

{

this.re=re;

this.im=im;

if (this)

{

amount++;

Console.WriteLine(”Ненулевой объект”);

}

else Console.WriteLine(”Нулевой объект”);

}

}

Для вызова статических элементов не требуется создавать экземпляр класса, в качестве префикса необходимо использовать имя класса:

Complex a = new Complex(3, 4);// напечатает ” Ненулевой объект”

Complex.PrintAmount();//напечатает ”Число ненулевых объектов

класса Complex: 1”

 

Complex b = new Complex(0,0); // напечатает ” Нулевой объект”

Complex.PrintAmount();//напечатает ”Число ненулевых объектов

класса Complex:: 2”

Метод Main() должен быть описан как статический метод, поскольку он вызывается без создания экземпляра соответствующего класса.


<== предыдущая лекция | следующая лекция ==>
Специальные требования ТБ при работе на ножницах по металлу | Показатели эффективности систем
Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 285; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.