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*
|
||||
* *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