main() | c#, patterns & stuff – Telegram
main() | c#, patterns & stuff
158 subscribers
28 photos
1 video
1 link
💻 Канал про паттерны проектирования и любопытные особенности .NET

📖 Контент:
- .NET C#
- паттерны проектирования
- принципы программирования,
- GIT
- тесты, шутки, прибаутки

🤝 Сотрудничество:
tg: @ilyailleya
email: ilya.lee@outlook.com
Download Telegram
🧐 Есть ли что-то больше чем 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
🧐 Какой метод объекта String используется для разделения строки на подстроки?
Anonymous Quiz
0%
Separate(...) 😿
75%
Split(...) 😿
8%
Segregate(...) 🤨
17%
Unmerge(...) 🤣
👍3
🧐 Что вернёт метод string.IsNullOrWhitespace(s), если string s = "\t\n"?
Anonymous Quiz
33%
false
11%
true
11%
null
44%
-1
👍1
🔴 Кортежи в С#

▶️ Кортежи позволяют объединить в одну сущность данные разных типов без определения отдельного класса/структуры. Это даёт возможность использовать их как альтернативу выходным параметрам метода (out).

📖 Кортежи изначально появились в C# 4.0 и были представлены типом System.Tuple.
Позднее, в версии C# 7.0 был добавлен новый тип System.ValueTuple. На данный момент рекомендуется использовать именно его ввиду повышенной производительности.


1️⃣ Пример функции, возвращающей кортеж:

public (string, int) GetFruit()
{
return ("Apple", 5);
}



2️⃣ Использование кортежей
По умолчанию имена полей кортежа имеют следующий вид:

(string, int) fruit = GetFruit();
//fruit.Item1, fruit.Item2



3️⃣ Элементам кортежа можно назначать имена:

public (string Name, int Count) GetFruit()
{
return ("Apple", 5);
}



4️⃣ Автоматическое определение имени элемента кортежа (начиная с C# 7.1):
var cort = (bob.Name, bob.Age);
Console.WriteLine(cort.Name);



5️⃣ Деконструирование кортежей.
Метод позволяет получить свойства объекта по-отдельности:

(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). Изучим базу и полезные фишки распределённой…»
😞 Отличаются ли чем-то типы string и String?

Коротко — нет. Подлиннее — вообще нет. 😆

Все ключевые слова C#, представляющие названия типов, — это псевдонимы для определённого типа .NET из библиотеки базовых классов BCL.

string — псевдоним типа System.String,
int — псевдоним типа System.Int32.


👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
👀 Если зашёл просто посмотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁3🦄3🤡1
🧐 Трёхэтапный процесс компиляции в .NET

1️⃣ Исполняющая среда CoreCLR загружает IL-код из сборки DLL или EXE,

2️⃣ JIT-компилятор “на лету” компилирует инструкции CIL-кода в инструкции CPU на конкретной машине,

3️⃣ Скомпилированные инструкции исполняются конкретным CPU.

☝️ Такая архитектура позволяет создавать исполняющие среды (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
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👏1
Какого модификатора доступа не существует в C#?
Anonymous Quiz
33%
private protected
13%
internal protected
53%
private internal
🤷‍♂2👍1😱1💊1
🧐 Что такое CTS?

CTS (Common Type System) расшифровывается как общая система типов — это полное описание всех типов данных и всех программных конструкций, поддерживаемых CLR.
Все фундаментальные типы данных .NET определены в сборке mscorlib.dll

При этом под типом данных обычно понимается что либо из следующего набора:
⚪️ класс
⚪️ интерфейс
⚪️ структура
⚪️ перечисление
⚪️ делегат

#net_basics

👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
👀 Если зашёл просто посмотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👀1
🧐 Какое ключевое слов нужно ввести в Visual Studio для создания автоматического свойства?
Anonymous Quiz
18%
Proper Twelve
73%
prop
9%
property
0%
Mr. Proper
👍2🔥2
🧐 Фиксация зависимостей

Фиксация зависимостей — указание конкретного семейства пакетов для одной версии .NET без дополнительных спецификаторов, таких как
🔘 бета-версии (beta1)
🔘 релиз-кандидаты (rc4)
🔘 подстановочные символы ( * )

Пример фиксированной зависимости:

<ItemGroup>
<PackageReference
Include="Microsoft.EntityFrameworkCore.Sqlite"
Version="6.0.0" />
</ItemGroup>


Пример нефиксированных зависимостей, которых лучше избегать:

<PackageReference Include="System.NET.Http" Version="4.1.0-*" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3-beta1" />


#net_basics

👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
👀 Если зашёл просто посмотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2🥰1
Какой модификатор определяет необходимость установки свойства во время создания объекта?
Anonymous Quiz
29%
readonly
43%
required
14%
retired
14%
что за дичь
🔥1🥰1🤬1