![](/user_photo/2706_HbeT2.jpg)
Lektsia_2VP
.pdfpublic struct Coordinate // тип значения
{
public int x; public int у;
}
public class EntryPoint // ссылочный тип
{
public static void AttemptToModifyCoord(Coordinate coord)
{
coord.x = 1; coord.у = 3;
}
public static void ModifyCoord(ref Coordinate coord)
{
coord.x =10; coord.у = 10;
}
11
static void Main()
{
Coordinate location; location.x = 50; location.у = 50;
AttemptToModifyCoord(location);
System.Console.WriteLine("({0}, {1})", location.x, location.у);
ModifyCoord(ref location);
System.Console.WriteLine("({0}, {1})", location.x, location.у);
}
}
//Вывод на консоль будет следующим:
//(50, 50) (10, 10)
12
Перечисления
Лежащий в основе enum тип должен быть целочисленным, т.е. одним из следующих:
byte, sbyte, short, ushort, int, uint, long или ulong.
13
Перечисления
public enum Color : long
{
Red, Green = 50, Blue
}
14
Перечисления
static void Main()
{
Color color = Color.Red;
Console.WriteLine("Color is {0}", color.ToString());
}
15
Инициализация переменных по умолчанию
•Для ссылок на объекты это соответствует null-ссылке, а для типов значений - нулевому значению (или false для булевского типа).
16
Неявно типизированные локальные переменные
using System;
using System.Collections.Generic; public class EntryPoint
{
static void Main()
{
var myList = new List<int>(); myList.Add(1); myList.Add(2); myList.Add(3);
foreach (var i in myList)
{
Console.WriteLine(i);
}
}
}
17
Неявно типизированные локальные переменные
var newValue;
выдаст ошибку Implicitly typed locals must be initialized
18
Преобразования типов
int defaultValue = 12345678; long value = defaultValue; int smallerValue = (int)value;
19
Ковариантность массивов
public class EntryPoint
{
static void Main()
{
string[] names = new string[4]; object[] objects = names;
//оператор с неявным преобразованием string[] originalNames=(string[])objects;
//оператор с явным преобразованием
}
}
20