Классы и объекты
Класс — это структура данных, объединяющая состояние (поля) и действия (методы и другие функции-члены). Экземпляры класса создаются с помощью оператора new. Класс может содержать статические члены или члены экземпляра. Статические члены принадлежат классам. Члены экземпляра принадлежат объектам (экземплярам класса).
В типе можно определить следующие члены: (Джеффри Рихтер CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C# Питер, Русская Редакция 2007)
Константа. Идентификатор, определяющий постоянную величину. Константы связаны с типом, а не с экземпляром.
Поле. Представляет неизменяемое или изменяемое значение. Поле может быть статическим – тогда оно является частью типа и экземплярным - тогда оно является частью объекта.
Метод. Представляет собой функцию, выполняющую операции, которые изменяют или запрашивают состояние типа (статический метод) или объекта (экземплярный метод).
Конструктор экземпляра– метод, используемый для инициализации полей экземпляра при его создании.
Конструктор типа – метод, используемый для инициализации статических полей типа.
Свойство. Для того чтобы можно было изменить значение (получить значение) закрытой переменной, необходимо использовать свойства или функции доступа (accessors). Для вызывающей стороны этот член выглядит как поле, но в реализации типа он выглядит как метод.
Перегруженный оператор.
Оператор преобразования.
Событие.
Тип. Позволяет определять другие вложенные в него типы.
Встроенные числовые типы (из Спецификации языка C# версии 3.0).
Category |
Bits |
Type |
Range/Precision |
Signed integral
|
8 |
sbyte |
–128...127 |
16 |
short |
–32,768...32,767 |
|
32 |
Int |
–2,147,483,648...2,147,483,647 |
|
64 |
Long |
–9,223,372,036,854,775,808...9,223,372,036,854,775,807 |
|
Unsigned integral |
8 |
Byte |
0...255 |
16 |
ushort |
0...65,535 |
|
32 |
Uint |
0...4,294,967,295 |
|
64 |
ulong |
0...18,446,744,073,709,551,615 |
|
Floating point |
32 |
float |
1.5 × 10−45 to 3.4 × 1038, 7-digit precision |
64 |
double |
5.0 × 10−324 to 1.7 × 10308, 15-digit precision |
|
Decimal |
128 |
decimal |
1.0 × 10−28 to 7.9 × 1028, 28-digit precision |
Тип bool используется для представления логических значений true или false.
Тип char используется для объявления символа Юникода (кода UTF-16).
Для создания переменных в программах C# используются оператор объявления. В операторе объявления необходимо указать тип и имя создаваемой переменной. Каждая переменная по значению должна быть инициализирована перед использованием (ей должно быть присвоено значение). Простые типы можно инициализировать с помощью литералов.
Пример. Объявление и инициализация переменных: sbyte, short, int, long. Форматирование числовых результатов при выводе данных на консоль.
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
sbyte sByte1 = 127;
short x = 32767;
int i = 123;
long long1 = 4294967296;
Console.WriteLine("Переменная sbyte{0,4:d} Переменная short{1,6:d} " +
" Переменная int{2,4:d} Переменная long{3,11:d}", sByte1, x, i,long1);
}
}
}
Для форматирования числовых результатов при выводе данных на консоль можно использовать составное форматирование. Общая форма записи спецификатора формата в составном форматировании имеет следующий вид: {номер_ аргумента[, ширина][: формат]}. Парные фигурные скобки ("{" и "}") здесь обязательны.
номер_ аргумента – описатель параметра, число, определяющее соответствующий объект из списка; индексация элементов ведется от нуля. Например, если имеется три объекта, то можно отформатировать сначала второй, а затем первый и третий объекты, задав следующую строку составного форматирования: "{1} {0} {2}".
Необязательный компонент ширина (alignment) — это целое число со знаком, которое служит для указания желательной ширины поля форматирования.
Необязательный компонент формат — это строка формата, соответствующая типу форматируемого объекта.
Пример. Объявление и инициализация переменных: float, double, decimal. Форматирование числовых результатов.
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
float x = 3.5555F;
double y = 3.5555;
decimal myMoney = 300.5m;
Console.WriteLine("Переменная float {0:f} Переменная double {1:f}" +
" Переменная decimal {2:c}", x, y, myMoney);
}
}
}
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
float x = 3.5555F;
double y = 3.5555;
decimal myMoney = 300.5m;
Console.WriteLine("Переменная float {0:##.#} Переменная double {1:#.###}" +
"Переменная decimal {2:c}", x, y, myMoney);
}
}
}
Литералы
Литерал — это представление значения в исходном коде.
Символьные литералы
char[] chars = new char[4];
chars[0] = 'X'; // Character literal
chars[1] = '\x0058'; // Hexadecimal
chars[2] = (char)88; // Cast from integral type
chars[3] = '\u0058'; // Unicode
логические литералы true false
Литерал_null null
Целочисленные литералы
Цифры от 0 до 9. Чтобы указать, что литерал представляет собой число без знака, он снабжается
суффиксом u или U, например:
uint i = 12u;
Console.WriteLine("{0:d}", i);
Суффиксы l или L применяются для создания литералов типа long и ulong:
long i = 1222L;
Console.WriteLine("{0:d}", i);
шестнадцатеричные числа
long i = 0xFFFF;
Console.WriteLine("{0:x}", i);
Литералы с плавающей точкой
float i = 10.0f;
Console.WriteLine("{0:f}", i);
double i = -3.7E-10D;
Console.WriteLine("{0:e}", i);
Строковые литералы
string i = "eeeeee\nyyyyyyyyy";
Console.WriteLine(i);
В языке С# строковый литерал может иметь префикс @. Он задает так называемый
буквальный литерал
string i =@"c:\";
Console.WriteLine(i);
Подробнее в спецификации языка C#.
Встроенные числовые типы являются структурами, и к их свойствам и методам и другим членам можно получить доступ.
Пример. Объявление и инициализация переменной типа bool. Вывод данных на консоль.
using System;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
bool b = true;
// WriteLine автоматически конвертирует значение переменной b в текст.
Console.WriteLine(b);
}
}
}
Тип char представляет 16-разрядные целые числа без знака в диапазоне от 0 до 65535. Набор возможных значений для типа char соответствует набору символов Юникода.
Пример. Объявление и инициализация четырех переменных типа char, имеющих одно и тоже значение - символ X.
using System;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
char char0 = 'X'; // Символьный литерал
char char1 = '\x0058'; // шестнадцатеричная escape-последовательность
char char2 = (char)88; // Преобразование типа int в char
char char3 = '\u0058'; // Юникод
Console.WriteLine("{0} {1} {2} {3}", char0, char1, char2, char3);
}
}
}