es
Feedback
C# 1001 notes

C# 1001 notes

Ir al canal en Telegram

Регулярные короткие заметки по C# и .NET. Просто о сложном для каждого. admin - @haarrp

Mostrar más
6 614
Suscriptores
-724 horas
+477 días
+4730 días
Archivo de publicaciones
#basics Как и зачем возвращать результат выполнения метода Main По умолчанию точка входа в наше приложение - метод Main объявлен с типом возвращаемого значения void. Однако, мы так же имеем возможность возвращать и целочисленное значение int (а начиная с C# 7.1 ещё и Task<int>):
class Program
{
    static int Main()
    {
        if (DateTime.Today.DayOfWeek == DayOfWeek.Monday)
            return -1; // Monday is bad
        else
            return 0;
    }
}

Нужно это в первую очередь для того, чтобы код, вызывающий нашу программу, имел возможность отреагировать на результат её выполнения. Стоит заметить, что сделать это получится лишь в том случае, когда информация о возвращаемых значениях и способах реагирования на них будет определена заранее, как в следующем примере на powershell:
dotnet run
if ($LastExitCode -eq 0) {
    Write-Host "Execution succeeded"
} else
{
    Write-Host "Execution Failed"
}
Write-Host "Return value = " $LastExitCode

💬 А знаете ли вы, что alias void в языке C# соответствует структуре public struct Void из сборки System? 😉 @csharp_1001_notes

#basics Консольное приложение и класс Console Консольный тип проектов один из самых простых и, вероятно, наиболее используемый при разработке на языке C#. Одним из определений консоли считают программное обеспечение, реализующее текстовый интерфейс. Ниже я приведу основные методы класса Console (сигнатуры опущены намеренно ввиду наличия у некоторых из них перегрузок): 🔶 Console.Read - считать символ 🔶 Console.ReadLine - считать последовательность символов 🔶 Console.Write - отобразить значение 🔶 Console.WriteLine - отобразить значение и перевести каретку в начало ('\r') следующей строки ('\n') Простенький пример их использования так же доступен по ссылке. А вот и пример чуть посложнее, где автор использовал консольное приложение для небольшого "опроса" с начислением очков за правильные ответы. 💬 Почаще разбирайте код других разработчиков, чтобы набивать руку в чтении и подсматривать интересные для себя моменты, ведь программирование- это не только написание кода, но и его чтение ☝️ @csharp_1001_notes

#basics Абсолютно минимально возможная программа на C# и Quine 🔶 Ранее в заметке №2 я уже публиковал минимально возможную программу на C#, однако упомянул, что некоторые её части так же опциональны. Дабы исправить эту оговорку , далее будет действительно самая маленькая (состоящая исключительно из обязательных частей) программа:
class Program
{
    static void Main()
    {
    }
}

🔶 Довольно интересным типом программ, на мой взгляд, являются Куайны (Quine), названные так в честь американского логика и философа Willard Van Orman Quine (1908—2000). Куайн (квайн, англ. quine) — компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста. Заинтригованы? Тогда попробуйте написать куайн на C# самостоятельно 😉 p.s. Один из многочисленных вариантов вы сможете найти по ссылке. @csharp_1001_notes

❇️ Рабочая неделя заканчивается, а значит у нас будет больше времени поломать голову и поразбираться с нюансами языка C#. Предлагаю вашему внимаю самые 🔥 интересные вопросы этой недели: 🔶 Readonly struct vs classes 🔶 Why is the call ambiguous? 🔶 What happens when creating a variable? 🔶 Random values seem to be not really random? Всем хороших и плодотворных выходных 👍 #sof_weekly

#basics Чем C# отличается от VB .NET Оба этих языка являются высокоуровневыми и входят в перечень языков программирования для платформы .NET. В основном их отличия синтаксические, но есть и более значительные. О последних далее: Есть в C# (нет в VB .NET): 🔶 Указатели и возможность писать unsafe код 🔶 Статические классы 🔶 Контроль переполнения checked/unchecked 🔶 Чувствительность к регистру (case-sensivity) 🔶 Более строгая проверка типов 🔶 Синтаксический сахар (делает язык менее многословным) Есть в VB .NET (нет в C#): 🔶 XML литералы 🔶 Вспомогательные методы IsNumeric и PMT 🔶 Inline объявление дат, например #12/31/2000# 🔶 Оператор Like для сравнения строки с шаблоном От себя замечу, что на сегодняшний день большинство проектов, которые продолжают использовать VB .NET являются скорее legacy (требующие сопровождения и исправления ошибок, нежели активной разработки). C#, напротив, уверенно занял лидерство в качестве основного языка разработки для платформы .NET 😉 💬 Крайне показательным в этом случае являются результаты опроса на StackOverflow за 2018, в котором 34.4% опрошенных указали, что используют C#, в то время как у VB .NET эта цифра едва дотягивает до 6.8%. @csharp_1001_notes

#basics №4. Чем C# отличается от Java Оба языка программирования являются объектно-ориентированными, унаследовали свой синтаксис от языка Си и исполняются в управляемой среде. Как бы то ни было, между ними есть и различия. Далее основные из них: 🔶 class B extends A равнозначно class B : A 🔶 В Java отсутствуют namespace 🔶 В C# для синхронизации доступа между потоками используется lock, в то время как в Java synchronized 🔶 Наличие в С# модификатора доступа internal 🔶 Перечисления (enum) в Java являются полноценными классами 😲 🔶 C# позволяет использовать строковые литералы в конструкции switch 🔶 Программы на C# используют .NET Framework, в случае с Java это платформа Java SE. @csharp_1001_notes

#basics №3. Кто автор языка C# Язык C# был разработан группой инженеров компании Microsoft для платформы .NET в далёком 2000 году и изначально имел кодовое название COOL (C-style Object Oriented Language). Главным архитектором является датский инженер-программист Anders Hjelsberg. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. @csharp_1001_notes

#basics №2. Минимально возможная программа на C# Минимально возможная программа на языке C# будет состоять из класса, содержащего статический метод Main().
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("It's just a start..");
        }
    }
}

При этом namespace и параметр args так же являются необязательными. @csharp_1001_notes

#basics №1. Метод Main() и его сигнатура Стандартной точкой входа для приложений, разработанных на языке C# является статический метод с именем Main. В большинстве случаев его объявление выглядит следующим образом: static void Main(string[] args) Начиная с C# 7.1 появилась возможность объявлять его в асинхронном виде: static Task<int> Main(string[] args) @csharp_1001_notes

Приветствую тебя, дорогой подписчик 🙏 Если ты это читаешь, то значит как и я любишь программирование. Меня зовут Максим и уже больше 10 лет я пишу на языке C# для .NET. На канале будут регулярно выходить небольшие, но полезные заметки. Будем двигаться от простого к сложному, узнавать новое и расти вместе. ✅ Подписывайся, чтобы не потерять и рекомендуй своим 👍