🧹 Финализатор (он же деструктор) — метод завершения, который освобождает ресурсы, то есть уничтожает объект.
Финализатор пишется без модификатора доступа, его имя совпадает с именем класса, перед которым ставится знак тильды (~).
public class Goo
{
public Goo() // конструктор
{
// выделение ресурсов
}
~Goo() // финализатор
{
// здесь освобождаются неуправляемые ресурсы
}
}
💣 Деконструктор — возвращает объект, разбитый на составные части. Метод использует синтаксис C# для деконструкции, например, для работы с кортежами.
public class Goo
{
public string Name {get;set;}
public int Age {set;get;}
// деконструктор
public void Deconstruct(out string gooName, out byte gooAge)
{
gooName = Name;
gooAge = Age;
}
}
// Создание объекта
Goo goo = new();
// использование деконструктора в кортеж
var (name, age) = goo;
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Квиз тайм!
Где выделяется память для поля значимого типа (например, DateTime), если это поле находится в объекте ссылочного типа (например, определённый пользователем класс Goo)?
Где выделяется память для поля значимого типа (например, DateTime), если это поле находится в объекте ссылочного типа (например, определённый пользователем класс Goo)?
Anonymous Quiz
40%
В стэке
10%
На жОском диске
40%
В куче
10%
Пёс его знает
👍2🔥1🤡1
Ну а размеры кэша вы легко можете проверить в спецификации своего процессора
#stackoverflow
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👀1
Квиз тайм!
Как расшифровывается JSON?
Как расшифровывается JSON?
Anonymous Quiz
12%
Japanese SON
0%
Java SingletON
29%
Jason Statham Object Notation
6%
Java Super Object Name
53%
Java Script Object Notation
😁4👍3🦄1😎1
💾 База
Значимые типы (типы значения) хранятся в стеке. К ним относятся:
🔘 типы чисел
🔘 char, DateTime, bool
🔘 Color, Point, Rectangle
Ссылочные типы хранятся в куче. В стеке хранится лишь адрес объекта ссылочного типа.
❗️ Если объект ссылочного типа (хранящийся в куче, мы помним) имеет поле значимого типа (DateTime, например), то значение DateTime будет хранится тоже в куче (!)
‼️ Если объект значимого типа (хранящийся в стеке), имеет поле ссылочного типа (например, string), то значение string будет храниться где? Правильно, в куче!
#stack, #heap
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2👀1
Квиз тайм!
Чем отличется string и String?
Чем отличется string и String?
Anonymous Quiz
27%
Размером хранимой строки🤔
9%
string — потомок String🤔
55%
string — псевдоним типа String🤔
9%
Просто дай знать ответ 🤨
👍2🤡2🤯1
ulong?Формально, самое большое целое число, которое может храниться в типе .NET и у которого в C# есть свой псевдоним
ulong, составляет порядка 18.5 квинтиллионов (да, это дофига).👀 Но 7-классникам-криптоинвесторам каких-то жалких 20 разрядов в числе недостаточно, чтобы хранить заработанные денюжки, поэтому пацанам из микрософта пришлось придумать тип
BigInteger, что в пространстве имён System.Numerics.💪 Этот бро вообще не видит краёв, в прямом смысле слова — у
BigInteger формально нет минимального и максимального значения. Он парсится из строки и может быть абсолютно любым целочисленным значением.Создать и инициализировать переменную типа
BigInteger можно с помощью следующего фрагмента кода:using System.Numerics;
BigInteger bigBro = BigInteger.Parse("5034750347508734805738945789346597346");
#bignumbers
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👀3👍2🔥2
Anonymous Quiz
0%
Separate(...) 😿
75%
Split(...) 😿
8%
Segregate(...) 🤨
17%
Unmerge(...) 🤣
👍3
Anonymous Quiz
33%
false
11%
true
11%
null
44%
-1
👍1
out).📖 Кортежи изначально появились в C# 4.0 и были представлены типом
System.Tuple.Позднее, в версии C# 7.0 был добавлен новый тип
System.ValueTuple. На данный момент рекомендуется использовать именно его ввиду повышенной производительности. public (string, int) GetFruit()
{
return ("Apple", 5);
}
По умолчанию имена полей кортежа имеют следующий вид:
(string, int) fruit = GetFruit();
//fruit.Item1, fruit.Item2
public (string Name, int Count) GetFruit()
{
return ("Apple", 5);
}
var cort = (bob.Name, bob.Age);
Console.WriteLine(cort.Name);
Метод позволяет получить свойства объекта по-отдельности:
(string name, int number) = GetFruit();
// в результате - 2 отдельные переменные name и number
#tuple
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2🤔1🤯1
main() | c#, patterns & stuff pinned «Hello, world! Привет! На этом канале я буду выкладывать посты об особенностях платформы .NET через призму языка C# — синтаксис, конструкции, концепции и прочее. Разложим по полочкам паттерны проектирования (design patterns). Изучим базу и полезные фишки распределённой…»
Все ключевые слова C#, представляющие названия типов, — это псевдонимы для определённого типа .NET из библиотеки базовых классов BCL.
string — псевдоним типа System.String,
int — псевдоним типа System.Int32.
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁3🦄3🤡1
☝️ Такая архитектура позволяет создавать исполняющие среды (CLR) не только для Windows, но и для Linux и macOS — собственно, чего ради всё и затевалось изначально.
#jit, #compile
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
💣 Development vs. Production
Как система ведёт себя при тестировании vs как она ведёт себя у заказчика🤣
#humor
Как система ведёт себя при тестировании vs как она ведёт себя у заказчика
#humor
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👏1