Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Работа с файлами.
Итак, снова файлы. Это понятие и механизм работы с ними уже вам знаком из курсов C++,MFC. Теперь настало время разобрать его в контексте C#, оценить все плюсы и минусы. Предадимся минимальной доле воспоминаний и примем дозу нового материала.
Под файлом понимают поименованные...
Практический пример. Класс матрица.
В этом разделе рассматривается пример на перегрузку операторов.
// CSharpMatrix.cs
using System;
namespace CSharpApplication.ClassMatrixSample
{
class Matrix
{
// Матрица
int [,] mtr = null;
// Размерности
int M = 0, N...
Перегрузка операторов
Какое знакомый мотив...
Перегрузка операторов в C# несколько отличается от перегрузки операторов в C++. Давайте разбираться с нововведениями (рассматриваем, естественно, только отличия).
*****
Все перегруженные операторы должны быть открытыми статическими функциями...
Индексаторы
Индексаторы напоминают перегруженный оператор индексации в C++, они позволяют обращаться к экземпляру класса или структуры, как к массиву. Индексаторы похожи на свойства, но их функции доступа могут принимать параметры.
*****
Следующий пример приведен лишь в "воспитательных целях"...
Классы-коллекции.
Вам уже известен класс для хранения набора элементов в C# - это массив System.Array. В нем достаточно много полезных методов, выполняющих различные действия. Например, сортировка массива. Однако класс – массив не является единственным встроенным классом, который используется...
Интерфейс IEnumerable.
В прошлом уроке вы узнали, что такое интерфейсы, поделили их на пользовательские и на встроенные в библиотеку .NET Framework(например, ICloneable). Сейчас настало время познакомиться с ещё двумя стандартными интерфейсами IEnumerable,IEnumerator. Для понимания, зачем они...
Перечисления.
С понятием перечисления вы уже встречались и знакомы... Нет, нет, не в прошлой жизни, а в курсе языка программирования “Си” вы познали его. Несмотря на этот радостный и знаменательный факт не будем предаваться сладким воспоминаниям о днях минувших, а вспомним, что это такое ещё раз...
Практический пример. Поверхностное и глубокое копирование
В этом разделе мы рассмотрим проблему копирования объектов ссылочных типов. Дело в том, что при копировании структурных типов копируются сами объекты, а при копировании ссылочных - ссылки (в терминах C++ указатели). Проблему частично...
Интерфейсы.
Итак, еще одно кажущееся таким знакомым слово. Его часто можно встретить в повседневной компьютерной жизни и, где бы оно ни встретилось, толкования этого слова могут несколько отличаться друг от друга. Проясним его значение в контексте языка C#.
Прежде всего введем понятие...
Абстрактный класс.
Предположим в базовом классе для какого-то наследуемого метода трудно придумать осмысленное наполнение. Например, вы реализуете иерархию геометрических фигур, и есть некоторый родительский класс Figure в котором определен метод Draw.
Задачей этого метода является рисование...
Виртуальные методы.
Метод базового класса, которому при определении был указан модификатор virtual, и который был переопределен в одном или более потомственных классов называется виртуальным методом класса. Каждый наследник может иметь собственную версию виртуального метода. При вызове такого...
Наследование.
Итак, настало время ознакомиться с таким вечнозеленым понятием объектно-ориентированного программирования как наследование. Данный термин вам уже известен из курса языка программирования С++.Теперь мы его рассмотрим в контексте С#. Начнем с синтаксиса применяемого для наследования...
Передача параметров в функцию (ref , out)
Как вы уже знаете из предыдущего раздела обычные типы данных типа int, char передаются внутрь метода по значению, что не позволяет сохранять изменения в них после выхода из метода. Для того чтобы решить эту проблему необходимо использовать ключевые слова...
Методы классов.
Использование и создание методов в программе на С# во многом схоже на уже известный вам подход из С++. Рассмотрим это поподробней. В C# любой метод является методом какого-либо класса. Например:
using System;
class Man{
public string name;
public int age;
public...
Сборка мусора.
Предисловие
Автоматическая сборка мусора (выделенной и более не используемой памяти) предназначена для облегчения жизни программисту, позволяя не заботиться о возможных утечках памяти (например, удалить выделенный в куче объект). С одной стороны - безусловно благие намерения, с...
Структуры.
В отличие от классов и структур в C++, структуры C# семантически отличны от классов. В данном разделе будет освещен ряд таких отличий (Некоторые отличия будут указаны в последующих уроках).
Структурный тип
Основное отличие заключается в том, что структуры являются структурными...
Классы.
И снова классы... Что же отличает классы C# от классов C++?
Уровни доступа
В языке C# доступ регулируется несколькими способами:
Доступ для членов класса:
Доступом по умолчанию является private.
Доступ для классов верхнего уровня (классов, не вложенных в другие классы)...
Практический пример. Одномерный массив.
Программа подсчитываем количество четных и нечетных элементов в массиве, а так же количество n-значных элементов (n от 1 до 5). Все элементы массива задаются случайным образом.
using System;
namespace CSharpApplication.ArraysExample
{
class Arrays...
Обработка исключений.
С Понятием исключения вы встречались в курсе С++.Настало время рассмотреть его в аспекте С#. Исключения в С# представлены классами. Все классы исключений могут быть унаследованы от встроенного класса исключений Exception, который является частью пространства имен System...