Особенности языка программирования C# (Си-шарп)

Автор работы: Пользователь скрыл имя, 16 Декабря 2010 в 19:19, реферат

Краткое описание

C# — это типизированный, объектно-ориентированный, простой и в то же время мощный язык программирования, который позволяет разработчикам создавать многофункциональные приложения. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET (программной платформы от компании Microsoft, предназначенной для создания обычных программ и веб-приложений).

Содержание работы

Введение 3
История возникновения 4
Особенности C# 5
Особенности реализации основных конструкций в C#. 6
Типы данных 6
Примитивные типы 6
Ссылочные типы 6
Структуры (записи) 7
Перечислимые типы 8
Массивы и коллекции 8
Параметризованные (обобщённые) типы 8
Переменные. 9
Циклы. 10
Цикл foreach 10
Цикл for 10
Цикл while 10
Цикл do-while 10
Функции и процедуры 11
Возвращаемые значения 11
Параметры 12
Некоторые особенности синтаксиса 13
Перегрузка операций 13
Пространства имён 13
Классы 14
Объявление класса 14
Создание объектов 15
Наследование классов 16
Таблица допустимых в определении классов комбинаций модификаторов доступа 17
Интерфейсы 17
Свойства и индексаторы 18
Сравнение C, C++ и C# 19
Сфера применения C# 21
Заключение 22
Список литературы 23
Приложения 24
Приложение 1 24
Приложение 2 24
Приложение 3 25
Приложение 4 25

Содержимое работы - 1 файл

Реферат.docx

— 55.09 Кб (Скачать файл)

Перечислимые  типы

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

Массивы и коллекции

Массивы и коллекции  получили выражение в синтаксисе, благодаря особой разновидности  цикла for (цикл по коллекции, известный  также как цикл foreach). Массив является объектом класса Array.

В C# есть как настоящие  многомерные массивы, так и массивы  массивов, которые в C# обычно называются «неровными», или «ступенчатыми» (jagged). Многомерные массивы всегда «прямоугольные» (говоря в двумерной терминологии), в то время как массивы массивов могут хранить строки разной длины (опять-таки в двумерном случае, в  многомерном аналогично). Многомерные  массивы ускоряют доступ к памяти (для них указатель разыменовывается только один раз), а неровные массивы  работают медленнее, но экономят память, когда не все строки заполнены. Многомерные  массивы требуют для своего создания лишь один вызов оператора new, а ступенчатые  требуют явно выделять память в цикле  для каждой строки.

Параметризованные (обобщённые) типы

Типы могут быть параметризованными, что поддерживает парадигму обобщённого программирования.

Поддержка обобщённости была интегрирована в саму виртуальную  среду выполнения, впервые появившись в .NET 2.0. Язык здесь стал лишь внешним  интерфейсом для доступа к  этим возможностям среды. Компилятор производит статическую проверку типов, а в  дополнение к этому JIT производит проверку корректности во время загрузки. Информация об обобщённых типах полностью присутствует во время выполнения и допускает полную поддержку рефлексии обобщённых типов и создание их новых реализаций

Переменные.

Переменная представляет числовое или строковое значение или объект класса. Значение, хранящееся в переменной, может измениться, однако имя остается прежним. Переменная представляет собой один тип поля.

В C# переменные объявляются  с определенным типом данных и  надписью.

Общий вид записи переменной: тип переменной имя переменной [= присваиваемое значение];

Необходимо указать  тип переменной: int, float, byte, short или  другой из более чем 20 различных  типов данных. Тип указывает, помимо всего прочего, точный объем памяти, который следует выделить для  хранения значения при выполнении приложения. При преобразовании переменной из одного типа в другой язык C# следует определенным правилам.

Например:  int answer = 42;

           string greeting = "Hello, World!";

           double bigNumber = 1e100;

           System.Console.WriteLine("{0} {1} {2}", answer, greeting, bigNumber);

Константа является другим типом поля. Она хранит значение, присваиваемое по завершении компиляции программы, и никогда после этого  не изменяется. Константы объявляются  помощью ключевого слова const; их использование  способствует повышению удобочитаемости  кода.

Например:   const int speedLimit = 55;

           const double pi = 3.14159265358979323846264338327950;

Переменная readonly аналогична константе, однако значение ей присваивается  при запуске программы. Это дает возможность задать значение на основе каких-либо других условий, неизвестных  до выполнения программы. Однако после  первого присваивания значение не может  быть снова изменено пока выполняется  программа.

Циклы.

Циклом называется один или несколько операторов, повторяющихся  заданное число раз или до тех  пор, пока не будет выполнено определенное условие. Выбор типа цикла зависит  от задачи программирования и личных предпочтений кодирования. Одним из основных отличий C# от других языков, таких  как C++, является цикл foreach, разработанный  для упрощения итерации по массиву  или коллекции.

Цикл foreach

В C# представлен новый  способ создания циклов, который может  быть неизвестен программистам на C++ и C: цикл foreach. Вместо просто создания переменной для индексирования массива или  другой структуры данных, такой как  коллекция, цикл foreach выполняет более  тяжелую работу.

Цикл foreach позволяет  производить итерацию по каждому  объекту в контейнерном классе, поддерживающем интерфейс IEnumerable. К контейнерным классам  относятся массивы, классы коллекций (System.Collection) и определенные пользователем  классы коллекций.

Объекты в цикле foreach доступны только для чтения! Значение объекта в коллекции изменять нельзя!

Пример: см. Приложение 1.

Цикл for

в случае если необходимо проводить итерации по элементам  массива то часто используют цикл for

Пример: см. Приложение 2.

Цикл while

Цикл while выполняет  оператор или блок операторов, пока определенное выражение не примет значение false.

Пример: см. Приложение 3.

Цикл do-while

Цикл do .. while выполнит блок операторов как минимум один раз, а затем повторит выполнение цикла до тех пор, пока условное выражение  не возвратит значение false.

Пример: см. Приложение 4.

Функции и процедуры

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

Функция отличается от процедуры двумя особенностями:

  • всегда вычисляет некоторое значение, возвращаемое в качестве результата функции;
  • вызывается в выражениях.

Процедура C# имеет  свои особенности:

  • возвращает формальный результат void, указывающий на отсутствие результата;
  • вызов процедуры является оператором языка;
  • имеет входные и выходные аргументы, причем выходных аргументов - ее результатов - может быть достаточно много.

Наиболее широкое  применение процедуры и функции  получают в качестве методов классов.

Возвращаемые  значения

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

Если функция должна обладать возвращаемым значением, то необходимо внести два изменения:

  • В описании функции вместо ключевого слова void указать тип возвращаемого значения.
  • По завершении всех вычислений в функции использовать ключевое слово return и передать возвращаемое значение вызывающему коду.

Синтаксис кода для  функций консольного приложения будет выглядеть следующим образом:

<возвращаемыйТип> <имяФункции>( )

{

return <возвращаемоеЗначение>;

}

Единственным ограничением в данном случае является требование, гласящее, что <возвращаемоеЗначение> должно иметь тип <возвращаемыйТип> или же должна существовать возможность его неявного преобразования в этот тип. Вообще говоря, <возвращаемыйТип> может быть любым.

Параметры

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

  • Список принимаемых функцией параметров в ее описании, а также типы этих параметров
  • Совпадающий список параметров при каждом вызове функции

Общий вид:  <ВозвращаемыйТип> <имяФункции> (<типПараметра> <имяПараметра> ...)

{

……

return <возвращаемоеЗначение>;

}

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

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

Некоторые особенности синтаксиса

  • Импорт статических  имён (import static) из классов. В C# импортируется  только сборка и при каждом использовании  импортируемых статических имён требуется указывать класс.
  • В C# в switch можно использовать текстовые строки.
  • C# содержит конструкции checked и unchecked, позволяющие локально включать и выключать динамическую проверку арифметического переполнения.
  • C# поддерживает оператор перехода goto. Обычное использование — передача управления на разные метки case в операторе switch и выход из вложенного цикла.
  • C# поддерживает отдельное понятие именованной типизированной константы и ключевое слово const.

Перегрузка  операций

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

Пространства  имён

C# использует пространства  имён (namespace), напоминающие одноимённый  механизм C++. Каждый класс относится  к некоторому пространству имён, те классы, для которых пространство  имён не указано явно, относятся  к безымянному пространству имён  по умолчанию. Пространства имён  могут быть вложенными друг  в друга.

Для обращения к  объекту, объявленному в другом пространстве имён или пакете, нужно объявить в программе требуемый пакет (пространство имён) как используемый. Обращение  к объекту производится через  квалифицированное имя, в качестве квалификатора используется имя  пакета (пространства имён). Если требуется  обращение к объекту без квалификации, программный модуль должен содержать  директиву разыменования: using.

Пространства имён никак не связаны с компилированными модулями (сборками, или assembly в терминологии Microsoft). Несколько сборок могут содержать  одно и то же пространство имён, в  одной сборке может объявляться  несколько пространств имён, не обязательно  вложенных. Модификаторы области видимости C# никак не связаны с пространствами имён.

Классы

Класс — это конструктор, который позволяет создавать  свои собственные пользовательские типы путем группирования переменных других типов, методов и событий. Класс подобен чертежу. Он определяет данные и поведение типа. Если класс  не объявлен статическим, то клиентский код может его использовать, создав объекты или экземпляры, назначенные  переменной. Переменная остается в  памяти, пока все ссылки на нее не выйдут из области видимости. В это  время среда CLR помечает ее пригодной  для сборщика мусора. Если класс  объявляется статическим, то в памяти остается только одна копия и клиентский код может получить к ней доступ только посредством самого класса, а не переменной экземпляра.

В отличие от структур классы поддерживают наследование, фундаментальную  характеристику объектно-ориентированного программирования.

Объявление  класса

Классы объявляются  с помощью ключевого слова class

Пример: public class Customer

         {

             //Fields, properties, methods and events go here...

         }

Ключевому слову class предшествует уровень доступа. Поскольку  в данном случае используется public, любой  может создавать объекты из этого  класса. По умолчанию классы определяются как internal (внутренние), что означает, что доступ к ним будет иметь только код текущего проекта. При желании можно указать, что класс является общим и должен быть доступен из других проектов. Для этого используется ключевое слово public. Классы, которые объявляются самостоятельно, не могут быть частными или защищенными. Соответствующие модификаторы — private и protected — можно использовать только для описания классов, являющихся членами других классов.

Информация о работе Особенности языка программирования C# (Си-шарп)