Похожие презентации:
С#. Базовая информация (лекция 1)
1.
С#Базовая информация
2.
ДанныеПЕРЕМЕННЫЕ
Значимые типы
Ссылочные типы
3.
ДанныеПЕРЕМЕННЫЕ
Литерал
bool
true, false
byte, sbyte
255, -127, 0xFF
short, ushort
-32768, 65535,
System.ValueType
Значимые типы
int, uint
u
-2147483648, 4294967295
long, ulong
l, ul
1l, 18446744073709551615
float, double
f, d
1e-18, 1d
decimal
m
19e20, 1.111111
char
DateTime
enum
struct
void
‘A’m ‘\n’, ‘0x78’, ‘\u0420’
Ссылочные типы
4.
ДанныеПЕРЕМЕННЫЕ
Литерал
Ссылочные типы
bool
true, false
System.Object
null
byte, sbyte
255, -127
String
“Hello world!”
short, ushort
-32768, 65535
System.Array
System.ValueType
Значимые типы
int, uint
u
-2147483648, 4294967295
*Интерфейсы
long, ulong
l, ul
1l, 18446744073709551615
*Делегаты
float, double
f, d
1e-18, 1d
*Классы
decimal
m
19e20, 1.111111
char
DateTime
enum
struct
void
‘A’m ‘\n’, ‘0x78’, ‘\u0420’
5.
ОператорыАРИФМЕТИЧЕСКИЕ
+
-
/
*
%
++
--
6.
ОператорыАРИФМЕТИЧЕСКИЕ
+
-
/
*
%
++
|
^
~
<<
>>
ПОБИТОВЫЕ
&
--
7.
ОператорыАРИФМЕТИЧЕСКИЕ
+
-
/
*
%
++
|
^
~
<<
>>
-=
*=
/=
%=
--
ПОБИТОВЫЕ
&
ПРИСВАИВАНИЕ
=
+=
…
8.
ОператорыАРИФМЕТИЧЕСКИЕ
+
-
/
*
%
++
|
^
~
<<
>>
+=
-=
*=
/=
%=
!=
<
>
<=
>=
--
ПОБИТОВЫЕ
&
ПРИСВАИВАНИЕ
=
СРАВНЕНИЕ
==
…
9.
ОператорыАРИФМЕТИЧЕСКИЕ
+
-
/
*
%
++
|
^
~
<<
>>
+=
-=
*=
/=
%=
!=
<
>
<=
>=
&&
!
--
ПОБИТОВЫЕ
&
ПРИСВАИВАНИЕ
=
СРАВНЕНИЕ
==
ЛОГИЧЕСКИЕ
||
…
10.
ОператорыАРИФМЕТИЧЕСКИЕ
+
-
/
*
%
++
|
^
~
<<
>>
+=
-=
*=
/=
%=
!=
<
>
<=
>=
&&
!
--
ПОБИТОВЫЕ
&
ПРИСВАИВАНИЕ
=
…
СРАВНЕНИЕ
==
ЛОГИЧЕСКИЕ
||
null-УСЛОВНЫЕ ОПЕРАТОРЫ И ПРОВЕРКИ ТИПА И ВЫРАЖЕНИЯ ПРИВЕДЕНИЯ
??
?.
!.
?[]
is
as
?:
11.
Условные конструкции и циклыУСЛОВНЫЕ
If, else
switch
break
goto case
return
throw
ЦИКЛЫ
for
break
foreach
continue
while
do while
12.
ДанныеCODE
STACK
HEAP
public int Foo(int a)
{
int b = a + 10;
return b;
}
…
13.
ДанныеCODE
STACK
HEAP
public int Foo(int a)
{
int b = a + 10;
return b;
}
int a
Foo
…
Начало фрейма
14.
ДанныеCODE
STACK
HEAP
public int Foo(int a)
{
int b = a + 10;
return b;
}
int b
int a
Foo
…
15.
ДанныеCODE
STACK
HEAP
public int Foo(int a)
{
int b = a + 10;
return b;
}
int b
int a
Foo
…
16.
ДанныеCODE
STACK
HEAP
public int Foo(int a)
{
int b = a + 10;
return b;
}
…
17.
ДанныеCODE
STACK
HEAP
object a = 10;
object a
…
18.
ДанныеCODE
STACK
HEAP
object a = 10;
int 10
object a
…
19.
ДанныеCODE
STACK
HEAP
object a = 10;
int 10
object a
…
20.
ДанныеCODE
STACK
HEAP
object a = 10;
object b = 10;
int 10
int 10
object b
object a
…
21.
ДанныеCODE
STACK
HEAP
object a = 10;
object b = 10;
object c = a;
int 10
int 10
object c
object b
object a
…
22.
ДанныеCODE
STACK
HEAP
object a = 10;
object b = 10;
object c = a;
a = 20;
int 10
int 10
object c
object b
object a
…
23.
ДанныеCODE
STACK
HEAP
object a = 10;
object b = 10;
object c = a;
a = 20;
int 10
int 10
object c
object b
object a
…
int 20
24.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var pen = new Pen();
}
…
25.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var pen = new Pen();
var pen2 = pen;
}
Pen
Pen pen
…
26.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var pen = new Pen();
var pen2 = pen;
pen = null;
}
Pen pen2
Pen pen
…
Pen
27.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var pen = new Pen();
var pen2 = pen;
pen = null;
pen = new Pen();
}
Pen pen2
Pen pen
…
Pen
28.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var pen = new Pen();
var pen2 = pen;
pen = null;
pen = new Pen();
}
Pen
Pen pen2
Pen pen
…
Pen
29.
ДанныеCODE
STACK
HEAP
public class Pen{}
Pen
Pen
…
30.
ДанныеCODE
STACK
HEAP
public class Pen{}
…
31.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var a = new Pen();
Bar(a);
}
public void Bar(Pen a)
{
a = new Pen();
}
…
32.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var a = new Pen();
Bar(a);
}
public void Bar(Pen a)
{
a = new Pen();
}
Pen
Pen a
Foo
…
33.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var a = new Pen();
Bar(a);
}
public void Bar(Pen a)
{
a = new Pen();
}
Pen a
Bar
Pen a
Foo
…
Pen
34.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var a = new Pen();
Bar(a);
}
public void Bar(Pen a)
{
a = new Pen();
}
Pen
Pen a
Bar
Pen a
Foo
…
Pen
35.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var a = new Pen();
Bar(a);
}
public void Bar(Pen a)
{
a = new Pen();
}
Pen
Pen
Pen a
Foo
…
36.
ДанныеCODE
STACK
HEAP
public class Pen{}
public void Foo()
{
var a = new Pen();
Bar(a);
}
public void Bar(Pen a)
{
a = new Pen();
}
Pen
Pen
…
37.
ДанныеCODE
STACK
HEAP
public class Pen{}
Pen
Pen
…
38.
ДанныеCODE
STACK
HEAP
public class Pen{}
…
39.
Массивытип_перемнной[] имя_массива;
int[] array0 = new int[1];
int[,] array1 = new int[2, 3];
int[,] array2 = { {0, 1}, {2, 3, 4} };
40.
Перечисленияenum ВремяГода : byte
{
Зима,
Весна,
Лето,
Осень
}
41.
Кортежиvar tuple = (5, 10);
private static (string name, int age) GetTuple((string n, int a) tuple, int x)
{
var result = (name: tuple.n, age: tuple.a + x);
return result;
}
42.
Методы[модификаторы] тип_возвращаемого_значения ИмяМетода ([параметры])
{
// тело метода
}
Параметры:
- ref
- in
- out
- params
43.
Модификаторы доступа- public
- internal
- protected
- private
- private protected
- protected internal
44.
Классыnamespace Lesson1;
public class Pen
{
}
45.
Поля и методы классаnamespace Lesson1;
public class Pen
{
private int _size;
public int get_Size()
{
return _size;
}
public void set_Size(int size)
{
_size = size;
}
public void Draw(int size = 1)
{
_size -= size;
}
}
46.
Свойстваnamespace Lesson1;
public class Pen
{
public int Size { get; set; }
public void Draw(int size = 1)
{
Size -= size;
}
}
47.
Пользовательские свойстваpublic class Pen
{
public int Size { get; set; }
private float _weight { get; set; }
public float Weight
{
get
{
return _weight;
}
set
{
_weight = value;
}
}
}
48.
Пользовательские свойстваpublic class Pen
{
public int Size { get; set; }
private float _weight { get; set; }
public float Weight
{
get => _weight;
set => _weight = value;
}
}
49.
Конструкторы классаpublic class Pen
{
public int Size { get; set; }
public Pen()
{
Size = 100;
}
public Pen(int size)
{
Size = size;
}
public Pen(Pen pen)
{
Size = pen.Size;
}
}
50.
Наследованиеpublic abstract class Pen
{
public int Size { get; set; }
private int _weight = 0;
protected float Price = 10;
}
public sealed class Pen2 : Pen
{
public Pen2()
{
Size = 10;
Price = 20;
_weight = 0; // Ошибка
}
}
51.
Абстрактные классыpublic abstract class Pen
{
public int Size { get; set; }
public abstract int Draw();
}
public class Pen2 : Pen
{
public override int Draw()
{
return Size--;
}
}
52.
Виртуальные методыpublic class Pen
{
public int Size { get; set; }
public virtual int Draw()
{
return Size--;
}
}
public class Pen2 : Pen
{
public override int Draw()
{
return Size--;
}
}
53.
Скрытиеpublic class Pen
{
public int Size { get; set; }
public int Draw()
{
return Size--;
}
}
public class Pen2 : Pen
{
public new int Draw()
{
return Size -= 2;
}
}
54.
Конструкторы при наследованииpublic class Pen
{
public int Size { get; set; }
public Pen(int size)
{
Size = size;
}
}
public class Pen2 : Pen
{
public Pen2() : base(100)
{
}
}
55.
base и thispublic class Pen
{
public int Size { get; set; }
}
public class Pen2 : Pen
{
public new int Size { get; set; }
public void Draw()
{
this.Size--;
base.Size--;
}
}
56.
Инициализация объектов классаclass Program
{
public static void Main(string[] args)
{
var p = new Pen();
p.Size = 100;
var p1 = new Pen{ Size = 100 };
}
}
57.
Обобщенияpublic class Pen<T>
{
public T Size { get; set; }
public virtual T Set<TD>(TD something)
{
if (something is T size)
{
Size = size;
}
return Size;
}
}
58.
Обобщения и наследованиеpublic class Pencil : Pen<int>
{
public override int Set<TD>(TD
something)
{
return something is int
? Size
: 0;
}
}
public class Pencil<T> : Pen<T>
{
public override T Set<TD>(TD
something)
{
return (something is T s
? Size = s
: default)!;
}
}
59.
Интерфейсыpublic interface IPen
{
int Size { get; set; }
void Draw();
}
public class Pen : IPen
{
public int Size { get; set; }
public void Draw()
{
Size--;
}
}
60.
Множественная реализация интерфейсовpublic interface IPen
{
int Size { get; set; }
}
public interface ITool
{
void Draw();
}
public class Pen : IPen, ITool
{
public int Size { get; set; }
public void Draw()
{
Size--;
}
}
61.
Делегатыpublic delegate void DrawDelegate1();
public delegate void DrawDelegate2(int size);
public class Pen
{
public int Size { get; set; }
public void Draw(DrawDelegate1 how1, DrawDelegate2 how2)
{
how1();
how2(Size);
}
}
62.
Action, Predicate, Funcpublic class Pen
{
public int Size { get; set; }
public void Draw(Action how1, Action<int> how2)
{
how1();
how2(Size);
}
public void Foo(Predicate<int> p, Func<int> f1, Func<int, int> f2)
{
bool b = p(Size);
int s1 = f1();
int s2 = f2(Size);
}
}
63.
Подписка и отпискаpublic class Pen
{
public int Size { get; set; }
public void Draw(Action how1, Action<int> how2)
{
how1();
how2(Size);
}
public void Foo()
{
Action<Action, Action<int>> how = Draw;
how += Draw;
how -= Draw;
}
}
64.
Событияpublic class Pen
{
public int Size { get; set; }
private Action<int> _drawDone;
public event Action<int> OnDrawDone
{
add => _drawDone += value;
remove => _drawDone -= value;
}
public void Draw()
{
Size--;
_drawDone(Size);
}
}
65.
Событияpublic class Pen
{
public int Size { get; set; }
public event Action<int> OnDrawDone;
public void Draw()
{
Size--;
OnDrawDone(Size);
}
}
66.
Событияpublic class Pen
{
public int Size { get; set; }
public event Action<int> OnDrawDone;
public void Draw()
{
Size--;
OnDrawDone?.Invoke(Size);
}
}
67.
Лямбдыpublic class Paper
{
public void Draw(Pen pen)
{
pen.OnDrawDone += PenOnOnDrawDone;
pen.Draw();
}
private void PenOnOnDrawDone(int size)
{
Console.WriteLine("Draw {size}", size);
}
}
// Ламбда-выражения
(список_параметров) => выражение;
68.
Лямбдыpublic class Paper
{
public void Draw(Pen pen)
{
pen.OnDrawDone += (size) =>
{
Console.WriteLine("Draw {size}", size);
};
pen.Draw();
}
}