cookie

Sizning foydalanuvchi tajribangizni yaxshilash uchun cookie-lardan foydalanamiz. Barchasini qabul qiling», bosing, cookie-lardan foydalanilishiga rozilik bildirishingiz talab qilinadi.

avatar

C#-о-мания | Unity | СИ | Юнити

Канал о программировании на C# и все, что с этим связано Реклама на канале - @badmaizanov csharp cisharp си шарп Unity юнити

Ko'proq ko'rsatish
Reklama postlari
4 215
Obunachilar
-1424 soatlar
-1007 kunlar
-47530 kunlar

Ma'lumot yuklanmoqda...

Obunachilar o'sish tezligi

Ma'lumot yuklanmoqda...

Photo unavailableShow in Telegram
✔️ Создание классов исключений Если нас не устраивают встроенные типы исключений, то мы можем создать свои типы. Базовым классом для всех исключений является класс Exception, соответственно для создания своих типов мы можем унаследовать данный класс. Допустим, у нас в программе будет ограничение по возрасту:
try
{
    Person person = new Person { Name = "Tom", Age = 17 };
}
catch (Exception ex)
{
    Console.WriteLine($"Ошибка: {ex.Message}");
}
 
class Person
{
    private int age;
    public string Name { get; set; } = "";
    public int Age
    {
        get => age;
        set
        {
            if (value < 18)
                throw new Exception("Лицам до 18 регистрация запрещена");
            else
                age = value;
        }
    }
}
В классе Person при установке возраста происходит проверка, и если возраст меньше 18, то выбрасывается исключение. Класс Exception принимает в конструкторе в качестве параметра строку, которое затем передается в его свойство Message. Но иногда удобнее использовать свои классы исключений. Например, в какой-то ситуации мы хотим обработать определенным образом только те исключения, которые относятся к классу Person. Для этих целей мы можем сделать специальный класс PersonException:
class PersonException : Exception
{
    public PersonException(string message)
        : base(message) { }
}
C#-о-мания
Hammasini ko'rsatish...
Photo unavailableShow in Telegram
👀 Оператор is Оператор is проверяет, совместим ли результат выражения с указанным типом. Оператор также можно использовать is для сопоставления выражения с шаблоном, как показано в следующем примере:
static bool IsFirstFridayOfOctober(DateTime date) =>
    date is { Month: 10, Day: <=7, DayOfWeek: DayOfWeek.Friday };
Здесь оператор is сопоставляет выражение с шаблоном свойства с вложенной константой и реляционными шаблонами. Оператор is может быть полезен в таких случаях: ✔️ Проверка типа результата выражения в среде выполнения, как показано в следующем примере:
int i = 34;
object iBoxed = i;
int? jNullable = 42;
if (iBoxed is int a && jNullable is int b)
{
    Console.WriteLine(a + b);  // output 76
}
✔️ Проверка значения null, как показано в следующем примере:
if (input is null)
{
    return;
}
Когда выражение сопоставляется с null, компилятор гарантирует, что ни один из перегруженных пользователем операторов == или != не вызывается. C#-о-мания
Hammasini ko'rsatish...
👍 1
Photo unavailableShow in Telegram
👀 Оператор delegate Оператор delegate создает анонимный метод, который можно преобразовать в тип делегата. Анонимный метод можно преобразовать в типы, такие как System.Action и System.Func<TResult> типы, используемые в качестве аргументов во многих методах.
Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(3, 4));  // output: 7
При использовании оператора delegate вам, возможно, нужно будет пропустить список параметров. В таком случае созданный анонимный метод можно будет преобразовать в тип делегата с любым списком параметров, как показано в примере ниже:
Action greet = delegate { Console.WriteLine("Hello!"); };
greet();

Action<int, double> introduce = delegate { Console.WriteLine("This is world!"); };
introduce(42, 2.7);

// Output:
// Hello!
// This is world!
Это единственная функция анонимных методов, которые не поддерживаются лямбда-выражениями. Во всех остальных случаях лямбда-выражение является предпочтительным способом написания встроенного кода. C#-о-мания
Hammasini ko'rsatish...
Photo unavailableShow in Telegram
🔼 Отрисовка данных в AvaloniaUI В статье подробно описывается, как AvaloniaUI обрабатывает и отрисовывает разные типы данных внутри элементов интерфейса. Читаем — здесь C#-о-мания
Hammasini ko'rsatish...
Photo unavailableShow in Telegram
📘 Architecture Modernization: Socio-technical alignment of software, strategy, and structure [2024] Автор: Nick Tune, Jean-Georges Perrin Год: 2024 Проверенные методы и принципы модернизации устаревших систем в новые архитектуры, которые обеспечивают серьезное конкурентное преимущество. Читаем — здесь C#-о-мания
Hammasini ko'rsatish...
00:17
Video unavailableShow in Telegram
👀 EverythingToolbar — инструмент, написанный на C# для мгновенного поиска файлов, приложений и всего остальногоwinget install everythingtoolbar Вдохновлён приложением Everything (кто не пользовался, это нереально оптимизированное приложение, мгновенно индексирует файлы). Подробнее — здесь C#-о-мания
Hammasini ko'rsatish...
ezgif-6-362dc98c88.mp41.37 MB
2
Photo unavailableShow in Telegram
👀 Операторы ?? и ??= Оператор объединения с NULL ?? возвращает значение своего операнда слева, если его значение не равно null. В противном случае он вычисляет операнд справа и возвращает его результат. Оператор ?? не вычисляет правый операнд, если значение левого операнда отлично от NULL. Оператор ??= присваивания присваивания null-объединения присваивает значение правого операнда левой операнда только в том случае, если левый операнд оценивается null. Оператор ??= не вычисляет правый операнд, если значение левого операнда отлично от NULL.
List<int>? numbers = null;
int? a = null;

Console.WriteLine((numbers is null)); // expected: true
// if numbers is null, initialize it. Then, add 5 to numbers
(numbers ??= new List<int>()).Add(5);
Console.WriteLine(string.Join(" ", numbers));  // output: 5
Console.WriteLine((numbers is null)); // expected: false        


Console.WriteLine((a is null)); // expected: true
Console.WriteLine((a ?? 3)); // expected: 3 since a is still null 
// if a is null then assign 0 to a and add a to the list
numbers.Add(a ??= 0);
Console.WriteLine((a is null)); // expected: false        
Console.WriteLine(string.Join(" ", numbers));  // output: 5 0
Console.WriteLine(a);  // output: 0
Левый операнд оператора ??= должен быть переменной, свойством или элементом индексатора. Тип левого ?? операнда и ??= операторов не может быть типом ненулевого значения. C#-о-мания
Hammasini ko'rsatish...
👍 1
Photo unavailableShow in Telegram
🔼 Максимально точное увеличение разрешения изображений: билинейная аппроксимация Информация, которая точно может пригодится в работе. Есть так же ролик, который помогал при ее написании. Читать — здесь C#-о-мания
Hammasini ko'rsatish...
🤯 1
Photo unavailableShow in Telegram
📘 Security-Driven Software Development: Learn to analyze and mitigate risks in your software projects [2024] Автор: Aspen Olmsted Год: 2024 Изучите основные концепции, такие как спецификация безопасности, моделирование и устранение угроз, используя итерационный подход этой книги, который позволяет проследить требования безопасности на каждом этапе разработки программного обеспечения. Читаем — здесь C#-о-мания
Hammasini ko'rsatish...
Photo unavailableShow in Telegram
👀 Разработка сервиса для публикации препринтов Разработка сервиса с учетом всех мелочей и погружением в подходы проектирования. Читать — здесь C#-о-мания
Hammasini ko'rsatish...