C# 15.10.2023
This commit is contained in:
parent
082000b21d
commit
23b1b7d778
66
C#/C#.md
66
C#/C#.md
@ -510,7 +510,7 @@ struct Person
|
|||||||
|
|
||||||
### Типы значений и ссылочные типы
|
### Типы значений и ссылочные типы
|
||||||
|
|
||||||
Типы значений (значимые типы) хранятся на стеке. К таким типам относятся:
|
Типы значений (значимые типы) хранятся на стеке. При присваивании значимых типов создаётся копия. К таким типам относятся:
|
||||||
|
|
||||||
* Целочисленные значения
|
* Целочисленные значения
|
||||||
* Числа с плавающей точкой
|
* Числа с плавающей точкой
|
||||||
@ -520,10 +520,72 @@ struct Person
|
|||||||
* Перечисления
|
* Перечисления
|
||||||
* Структуры
|
* Структуры
|
||||||
|
|
||||||
Ссылочные типы в куче, а ссылка на них в стеке. К ним относятся:
|
Ссылочные типы в куче, а ссылка на них в стеке. При присваивании ссылочных типов копируется только ссылка. К ним относятся:
|
||||||
|
|
||||||
* *string*
|
* *string*
|
||||||
* *object*
|
* *object*
|
||||||
* Классы
|
* Классы
|
||||||
* Интерфейсы
|
* Интерфейсы
|
||||||
* Делегаты
|
* Делегаты
|
||||||
|
|
||||||
|
## Пространства имён
|
||||||
|
|
||||||
|
Пространства имён позволяют организовыывать код программы в логические блоки
|
||||||
|
|
||||||
|
```C#
|
||||||
|
namespace Foo {
|
||||||
|
namespace Bar {
|
||||||
|
class Baz {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Пространство имён подключается с помощью *using*
|
||||||
|
|
||||||
|
```C#
|
||||||
|
using Foo;
|
||||||
|
using Foo.Bar; // Для этого снача using Foo писать не надо
|
||||||
|
global using Foo.Bar; // Подключает этот namespace везде. Зачастую такое в файле GlobalUsings.cs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Модификаторы доступа
|
||||||
|
|
||||||
|
* *private* - только в рамках класса/структуры (по умолчанию для полей)
|
||||||
|
* *private protected* - в рамках класса и наследников внутри сборки
|
||||||
|
* *file* - только в текущем файле
|
||||||
|
* *protected* - внутри класса и наследниках, которые могут находиться в других сборках
|
||||||
|
* *internal* - доступен только внутри сборки (по умолчанию для классов)
|
||||||
|
* *protected internal* - доступен из любого места в сборке и классах наследниках, которые могут быть в других сборках
|
||||||
|
* *public* - достпупен везде
|
||||||
|
|
||||||
|
## Свойства
|
||||||
|
|
||||||
|
```C#
|
||||||
|
class Person {
|
||||||
|
string name = "Undefined";
|
||||||
|
|
||||||
|
public string Name {
|
||||||
|
get {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Можно и так
|
||||||
|
|
||||||
|
```C#
|
||||||
|
class Person
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public int Age { get; set; } = 69;
|
||||||
|
|
||||||
|
public Person(string name) {
|
||||||
|
this.Name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Reference in New Issue
Block a user