{
Class Program // имя класса по умолчанию
{
static void Main(string[] args)
{
Console.WriteLine("Введите Ваше имя"); // вывод строки на экран
string name;
name = Console.ReadLine(); // ввод строки с клавиатуры
if (name == "")
Console.WriteLine("Здравствуй, мир!");
Else
Console.WriteLine("Здравствуй, " + name + "!");
} } }
Типы данных C#
С# является жестко типизированным языком. При его использовании вы должны объявлять тип каждого объекта, который создаете (например, целые числа, числа с плавающей точкой, строки, окна, кнопки, и т. д.), и компилятор поможет вам избежать ошибок, связанных с присвоением переменным значений.
Подобно языку C++, C# подразделяет типы на два вида: встроенные типы, которые определены в языке, и определяемые пользователем типы, которые создает программист.
Все типы данных разделяются на две основные разновидности: размерные (структурные) типы (value-based) и ссылочные типы (reference-based). К структурным типам относятся все числовые типы данных (int, float и др.), а также перечисления и структуры. К ссылочным типам относятся массивы, строкииклассы.
|
|
Встроенные типы:
Для каждого втсроенного типа существует соответствующий тип в CRL (Common Language Runtime). Это означает, что каждый тип имеет два названия - полный (из CLR, который можно использовать в любом языке.NET) и сокращенный, используемый в C#. Можно использовать любое:
Таблица 1.1 – Имена встроенных типов
Логический тип | ||||
Имя типа | Системный тип | Значения | Размер | |
bool | System.Boolean | true, false | 8 бит | |
Арифметические целочисленные типы | ||||
Имя типа | Системный тип | Диапазон | Размер | |
sbyte | System.SByte | -128 — 128 | Знаковое, 8 Бит | |
byte | System.Byte | 0 — 255 | Беззнаковое, 8 Бит | |
short | System.Short | -32768 —32767 | Знаковое, 16 Бит | |
ushort | System.UShort | 0 — 65535 | Беззнаковое, 16 Бит | |
int | System.Int32 | ≈(-2*109 —2*109) | Знаковое, 32 Бит | |
uint | System.UInt32 | ≈(0 — 4*109) | Беззнаковое, 32 Бит | |
long | System.Int64 | ≈(-9*1018 — 9*1018) | Знаковое, 64 Бит | |
ulong | System.UInt64 | ≈(0— 18*1018) | Беззнаковое, 64 Бит | |
Арифметический тип с плавающей точкой | |||||||
Имя типа | Системный тип | Диапазон | Точность | ||||
float | System.Single | +1.5*10-45 - +3.4*1038 | 7 цифр | ||||
double | System.Double | +5.0*10-324 - +1.7*10308 | 15-16 цифр | ||||
Арифметический тип с фиксированной точкой | |||||||
Имя типа | Системный тип | Диапазон | Точность | ||||
decimal | System.Decimal | +1.0*10-28 - +7.9*1028 | 28-29 значащих цифр | ||||
Символьные типы | |||||||
Имя типа | Системный тип | Диапазон | Точность | ||||
char | System.Char | U+0000 - U+ffff | Unicode символ | ||||
string | System.String | Строка из символов Unicode | |||||
Объектный тип | |||||||
Имя типа | Системный тип | Примечание | |||||
Object | System.Object | Прародитель всех встроенных и пользовательских типов | |||||
В языке C# сглажено различие между типом и классом. Все типы - встроенные и пользовательские - одновременно являются классами, связанными отношением наследования. Родительским, базовым классом является классObject. Все остальные типы или, точнее, классы являются его потомками, наследуя методы этого класса. У классаObject есть четыре наследуемых метода:
|
|
- bool Equals (object obj) - проверяет эквивалентность текущего объекта и объекта, переданного в качестве аргумента;
- System.Type GetType () - возвращает системный тип текущего объекта;
- string ToString () - возвращает строку, связанную с объектом. Для арифметических типов возвращается значение, преобразованное в строку;
- int GetHashCode() - служит как хэш-функция в соответствующих алгоритмах поиска по ключу при хранении данных в хэш-таблицах.
Естественно, что все встроенные типы нужным образом переопределяют методы родителя и добавляют собственные методы и свойства.
int x=11; //определение целой переменной встроенного
int v = new Int32(); //определение целой переменной встроенного типа
v = 007;
string s1 = "Agent"; //определение строковой переменной
Преобразования типов
Важным классом преобразований являются преобразования в строковый тип и наоборот. Преобразования в строковый тип всегда определены, поскольку, все типы являются потомкамибазового классаObject, а, следовательно, обладают методом ToString(). Метод ToString можно вызывать явно, но, если явный вызов не указан, то он будет вызываться неявно, всякий раз, когда по контексту требуется преобразование к строковому типу:
public void ToStringTest(){
string s ="Владимир Петров ";
string s1 =" Возраст: ";
int ux = 27;
s = s + s1 + ux.ToString();
WhoIsWho("s",s);
s1 =" Зарплата: ";
float dy = (float)2700.50;
s = s + s1 + dy;
WhoIsWho("s",s);
}