Перегруженный оператор
Пример кода на языке C#.
Примеры по Созданию консольных приложений (Visual C#) доступныпо ссылке http://msdn.microsoft.com/ru-ru/library/452fz12a(v=vs.90)
Пример. Создание консольного приложения Visual C# Console Application.
//директиваusing с перечислением пространств имен библиотеки классов платформы .NET Framework//определяет префиксSystem
using System;
// объявление собственного пространства имен
namespace ConsoleApplication2
{
//Класс Program объявлен с единственным членом - статическим методом Main
class Program
{
//Метод Main - точка входа в программу
static void Main(string[] args)
{
string text;
Console.Write("Введите текст\n");
text = Console.ReadLine();
//статический метод WriteLine–класса Console пространства имен System
Console.WriteLine(text);
}
}
}
Результат выполнения программы:
Метод Main объявляется внутри класса или структуры.
Файлы исходного кода С# имеют расширение .cs. C# программы состоят из одного или более исходных файлов. При компиляции C# программ получаются сборки. Сборки имеют расширение .exe или .dll, они реализованы как приложения или как библиотеки.
Общие сведения о системе общих типов (CTS).
Система общих типов определяет способ объявления, использования и управления типами во время выполнения.
Типы и переменные
There are two kinds of types in C#: value types and reference types.
Система общих типов поддерживает две общие категории типов: типы значений и ссылочные типы.
Переменные типа значений содержат данные.
Переменные ссылочного типа хранят ссылки на соответствующие данные (объекты).
К типам значений в C# относятся простые типы, перечисляемые типы, типы структур и обнуляемые типы. К ссылочным типам в C# относятся типы классов, типы интерфейсов, типы массивов и типы делегатов.
Система общих типов CTS в платформе .NET Framework поддерживает следующие категории типов: (из Спецификации языка C# версии 3.0)
Category | Description | |
Value types | Simple types | Signed integral: sbyte, short, int, long |
Unsigned integral: byte, ushort, uint, ulong | ||
Unicode characters: char | ||
IEEE floating point: float, double | ||
High-precision decimal: decimal | ||
Boolean: bool | ||
Enum types | User-defined types of the form enum E {...} | |
Struct types | User-defined types of the form struct S {...} | |
Nullable types | Extensions of all other value types with a null value | |
Reference types | Class types | Ultimate base class of all other types: object |
Unicode strings: string | ||
User-defined types of the form class C {...} | ||
Interface types | User-defined types of the form interface I {...} | |
Array types | Single- and multi-dimensional, for example, int[] and int[,] | |
Delegate types | User-defined types of the form e.g. delegate int D(...) |
Для создания нового типа в программах на языке C# его необходимо определить. Можно определить пять пользовательских типов: классы, структуры, интерфейсы, перечисления и делегаты.
Классы и объекты
Класс — это структура данных, объединяющая состояние (поля) и действия (методы и другие функции-члены). Экземпляры класса создаются с помощью оператора new. Класс может содержать статические члены или члены экземпляра. Статические члены принадлежат классам. Члены экземпляра принадлежат объектам (экземплярам класса).
В типе можно определить следующие члены: (Джеффри Рихтер CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C# Питер, Русская Редакция 2007)
Константа.Идентификатор, определяющий постоянную величину. Константы связаны с типом, а не с экземпляром.
Поле. Представляет неизменяемое или изменяемое значение. Поле может быть статическим – тогда оно является частью типа и экземплярным - тогда оно является частью объекта.
Метод. Представляет собой функцию, выполняющую операции, которые изменяют или запрашивают состояние типа (статический метод) или объекта (экземплярный метод).
Конструктор экземпляра– метод, используемый для инициализации полей экземпляра при его создании.
Конструктор типа– метод, используемый для инициализации статических полей типа.
Свойство. Для того чтобы можно было изменить значение (получить значение) закрытой переменной, необходимо использовать свойства или функции доступа (accessors). Для вызывающей стороны этот член выглядит как поле, но в реализации типа он выглядит как метод.
Перегруженный оператор.