Какого модификатора доступа не существует в C#?
Anonymous Quiz
33%
private protected
13%
internal protected
53%
private internal
🤷♂2👍1😱1💊1
CTS (Common Type System) расшифровывается как общая система типов — это полное описание всех типов данных и всех программных конструкций, поддерживаемых CLR.
Все фундаментальные типы данных .NET определены в сборке
mscorlib.dllПри этом под типом данных обычно понимается что либо из следующего набора:
⚪️ класс
⚪️ интерфейс
⚪️ структура
⚪️ перечисление
⚪️ делегат
#net_basics
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👀1
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
Такое случается с лучшими из нас
👉 Как известно, в .NET есть три наиболее распространённых типа данных для хранения вещественных чисел —
float, double и decimal.Как-то так повелось, что чаще всего в приложениях используется тип
double. Особенно если вы не задумываетесь о количестве оперативной памяти на стороне клиента. ❗️Диапазон типа double просто лютый — от ±5.0 × 10^(−324) до ±1.7 × 10^308. Количество разрядов после десятичного разделителя — не сосчитать.
Но если вы напишете следующий код:
double a = 0.1;
double b = 0.2;
if (a + b == 0.3)
Console.WriteLine("true");
else
Console.WriteLine("false");
то к своему удивлению можете обнаружить, что результат будет
false. ❓ Почему же?
Всё дело в том, как компьютер хранит в памяти числа с плавающей запятой.
Если десятичное число можно однозначно представить в виде двоичного числа (перевести в двоичную систему счисления без потери точности), то проблем со сравнением чисел не будет.
❗️ Но если десятичное число не может быть однозначно представлено в двоичной системе, то и оператор сравнения выдаст некорректный результат.
‼️ Например, число 12.75 будет представлено в двоичной системе как 1100.1100.
А вот число 0.1 должно быть представлено как 0.000(1100), где скобки означают бесконечное повторение этих четырёх чисел. Но поскольку невозможно хранить бесконечное число, оно в какой-то момент обрезается, что и приводит к потере точности.
А потому 0.1 + 0.2 уже не будет в точности равно 0.3.
decimal — ваш бро.Кстати, с использованием оператора равенства при сравнении чисел двойной точности случился очень неприятный казус. Во время войны в Персидском заливе американский противоракетный комплекс Patriot был запрограммирован с использованием чисел двойной точности с плавающей запятой (тех самых
double). Неточность в расчётах привела к тому, что комплекс не смог перехватить иракскую ракету Р-17, и та попала в американские казармы в городе Дхарам.Так что погроммирование — это то ещё искусство.
👍 Если и так всё знал (да ладно, не заливайте, я вот не знал),
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2🥰1🦄1
Anonymous Quiz
14%
пересчитывать свойства объекта 🤔
43%
применять синтаксис массива для обращения к свойству объекта 🤔
21%
применять массив синтаксисов для обращения к объекту свойств 😿
21%
да что они себе позволяют! 🤨
👍1🥰1
Различия основных версий среды разработки Visual Studio.
#vs
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1🥰1👀1🦄1😎1
Anonymous Quiz
28%
Roselin 🤔
17%
Gosling 🤣
11%
Josephine 🤣
33%
Roslyn 😂
11%
Rosalyn 😏
🤡2🔥1🥰1🦄1😎1
CLI (Common Language Infrastructure) — спецификация общеязыковой инфраструктуры.
Эта спецификация даёт возможность создавать дистрибутивы платформы .NET для других операционных систем и процессоров.
❗️Дайте мне знать в комментах, когда и, главное, кому эта информация пригодится.
#net_basics
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1🥰1🦄1😎1
Anonymous Quiz
61%
пространство имён
22%
пространство типОв
0%
пространство пространств
0%
пространство гильберта
17%
автор, отдохни
👍1🥰1👏1
Сборка — двоичный модуль (EXE, DLL), содержащий управляемый код на промежуточном языке и метаданные типов.
Промежуточный язык — он же IL (Intermediate Language).
Он же MSIL - Microsoft IL.
Он же CIL - Common IL.
🔘 Определяются по дружественному имени.
🔘 Могут находится в подкаталогах, тогда их местоположение прописывается в конфиг файле App.config с помощью тегов
assemblyBinging->probing->privatePath.#net_basics
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🥰1🤔1🦄1
Anonymous Quiz
10%
splitted
65%
partial
10%
segregate
15%
divided
👍1🔥1🥰1👏1🦄1
Если вкратце, всё это — компоненты одной системы.
Их отношение друг к другу можно описать в терминах множеств/подмножеств следующим образом:
CLR
{
CTS
{
CLS
}
}
То есть, CLR содержит CTS, которая содержит CLS.
Ниже — подробнее о каждом из этим компонентов.
— общеязыковая исполняющая среда; набор служб, требующихся для выполнения скомпилированного кода.
CLR отвечает за:
🔘 обнаружение,
🔘 загрузку
🔘 управление объектами .NET.
CLR управляет памятью, потоками, базовыми проверками безопасности.
При обращении к типу CLR выполняет действия:
1️⃣ находит сборку,
2️⃣ находит запрошенный тип в двоичном модуле путём чтения метаданных,
3️⃣ размещает тип в памяти,
4️⃣ компилирует CIL код в машинный код (инструкции CPU),
5️⃣ выполняет проверки безопасности,
6️⃣ выполняет код.
— общая система типов; полное описание всех типов данных и всех программных конструкций, поддерживаемых CLR.
— общеязыковая спецификация; подмножество CTS, в котором описан необходимый минимум, который должны поддерживать все языки программирования (и компиляторы) для .NET.
#net_basics
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2🔥1🥰1
Anonymous Quiz
18%
as 🤨
53%
is 🤨
9%
at 🤨
21%
wtf 🤨
👍1🥰1👏1
Оператор vs выражение
Начиная с C# 8.0, длинный и многословный оператор
Выглядит это следующим образом:
Здесь
#operators
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
👀 Если зашёл просто посмотреть
SWITCHНачиная с C# 8.0, длинный и многословный оператор
switch с этими дурными case'ами break'ами можно заменить на выражение switch Выглядит это следующим образом:
int j = 100;
int i = j switch
{
1 => 10,
2 => 20,
3 => 30,
_ => 100
};
Здесь
case и break заменяются операторм лямбды (=>), а ветвь default заменяется символом нижнего подчёркивания#operators
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
👀 Если зашёл просто посмотреть
🔥6👍2🥰1👏1👀1🦄1
Anonymous Quiz
28%
StringReader
17%
TextReader
55%
StreamReader
👍2🔥2🥰1🦄1
Такое случается
👉 Как известно, в .NET есть три наиболее распространённых типа данных для хранения вещественных чисел —
float, double и decimal.Как-то так повелось, что чаще всего в приложениях используется тип
double. Особенно если вы не задумываетесь о количестве оперативной памяти на стороне клиента. ❗️Диапазон типа double просто лютый — от ±5.0 × 10^(−324) до ±1.7 × 10^308. Количество разрядов после десятичного разделителя — не сосчитать.
Но если вы напишете следующий код:
double a = 0.1;
double b = 0.2;
if (a + b == 0.3)
Console.WriteLine("true");
else
Console.WriteLine("false");
то к своему удивлению можете обнаружить, что результат будет
false. ❓ Почему же?
Всё дело в том, как компьютер хранит в памяти числа с плавающей запятой.
Если десятичное число можно однозначно представить в виде двоичного числа (перевести в двоичную систему счисления без потери точности), то проблем со сравнением чисел не будет.
❗️ Но если десятичное число не может быть однозначно представлено в двоичной системе, то и оператор сравнения выдаст некорректный результат.
‼️ Например, число 12.75 будет представлено в двоичной системе как 1100.1100.
А вот число 0.1 должно быть представлено как 0.000(1100), где скобки означают бесконечное повторение этих четырёх чисел. Но поскольку невозможно хранить бесконечное число, оно в какой-то момент обрезается, что и приводит к потере точности.
А потому 0.1 + 0.2 уже не будет в точности равно 0.3.
decimal — ваш бро.Кстати, с использованием оператора равенства при сравнении чисел двойной точности случился очень неприятный казус. Во время войны в Персидском заливе американский противоракетный комплекс Patriot был запрограммирован с использованием чисел двойной точности с плавающей запятой (тех самых
double). Неточность в расчётах привела к тому, что комплекс не смог перехватить иракскую ракету Р-17, и та попала в американские казармы в городе Дхарам.Так что погроммирование — это то ещё искусство.
👍 Если и так всё знал (да ладно, не заливайте, я вот не знал),
🔥 Если ты Вий, и тебе подняли веки,
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3🥰1👀1
👍3🔥1👏1
Свойства в языке C#
В сущности, свойство это замена set/get методов. В свойствах используется лексема value - это контекстное ключевое слово языка
Можно выделить пару базовых рекомендаций по использованию свойства:
1️⃣ Для установки и получения данных всегда рекомендуется использовать свойства, в том числе везде внутри определения класса.
2️⃣ Не рекомендуется писать много кода с аксессорах
#properties
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
👀 Если зашёл просто посмотреть
В сущности, свойство это замена set/get методов. В свойствах используется лексема value - это контекстное ключевое слово языка
Можно выделить пару базовых рекомендаций по использованию свойства:
set и get. При необходимости правильнее выносить этот код в отдельную функцию, которую вызывать из самого аксессора.#properties
👍 Если и так всё знал,
🔥 Если ты Вий, и тебе подняли веки,
👀 Если зашёл просто посмотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
🔥3👍1👏1😁1