Разработка веб-приложений с помощью .NET и Visual Studio: серия практических уроков
Этот проект из 6 частей, который поможет научиться создавать веб-приложения на C#. На примере создания простого сайта для пиццы автор объясняет Razor Page, API и Azure:
https://github.com/dotnet/intro-to-dotnet-web-dev
#c
@csharp_ci
Этот проект из 6 частей, который поможет научиться создавать веб-приложения на C#. На примере создания простого сайта для пиццы автор объясняет Razor Page, API и Azure:
https://github.com/dotnet/intro-to-dotnet-web-dev
#c
@csharp_ci
GitHub
GitHub - dotnet/intro-to-dotnet-web-dev: Get Started as a Web Developer with .NET, C#, and ASP.NET Core
Get Started as a Web Developer with .NET, C#, and ASP.NET Core - dotnet/intro-to-dotnet-web-dev
.NET 8 уже в пути! Откройте для себя его новые возможности
Вы можете в это поверить? Такое ощущение, что только вчера мы были в восторге от .NET 7, и вот мы уже говорим о .NET 8! Время летит незаметно, когда готовится что-то потрясающее.
Но не бойтесь, Microsoft усердно работает над тем, чтобы предоставить нам новейшие и замечательные функции, которые мы рассмотрим в этой статье.
Так что сядьте поудобнее, расслабьтесь и давайте погрузимся во все новые захватывающие обновления, которые приготовили для нас в .NET 8.
📌 Читать
@csharp_ci
Вы можете в это поверить? Такое ощущение, что только вчера мы были в восторге от .NET 7, и вот мы уже говорим о .NET 8! Время летит незаметно, когда готовится что-то потрясающее.
Но не бойтесь, Microsoft усердно работает над тем, чтобы предоставить нам новейшие и замечательные функции, которые мы рассмотрим в этой статье.
Так что сядьте поудобнее, расслабьтесь и давайте погрузимся во все новые захватывающие обновления, которые приготовили для нас в .NET 8.
📌 Читать
@csharp_ci
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Microsoft обновила стратегии развития языков, которые входят в .NET. В целом, упор сделан на сообществе, стремительном развитии и инновациях: C# (читать), F# (читать) и Visual Basic.
@csharp_ci
@csharp_ci
Docs
Стратегия языка - A tour of C#
Мы продолжаем развивать C# в соответствии с изменяющимися потребностями разработчиков, чтобы оставаться современным языком программирования. Мы будем активно и широко внедрять инновации в сотрудничестве с разработчиками C#
Octokit - GitHub API Client Library for .NET
Octokit - это клиентская библиотека, для .NET Framework 4.6 или выше и .NET Standard 2.0 и выше, которая обеспечивает простой способ взаимодействия с Github Api
🖥 Github
@csharp_ci
Octokit - это клиентская библиотека, для .NET Framework 4.6 или выше и .NET Standard 2.0 и выше, которая обеспечивает простой способ взаимодействия с Github Api
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Автоматическая сборка мусора упрощает разработку программ, избавляя от необходимости отслеживать жизненный цикл объектов и удалять их вручную. Однако, чтобы сборщик мусора был полезным инструментом, а не главным врагом на пути к высокой производительности — иногда имеет смысл помогать ему, оптимизируя частые аллокации и аллокации больших объектов.
Для уменьшения аллокаций в современном .NET предусмотрены Span/Memory<T>, stackalloc с поддержкой Span, структуры и другие средства. Но если без объекта в куче не обойтись, например, если объект слишком большой для стека, или используется в асинхронном коде — этот объект можно переиспользовать. И для самых крупных объектов — массивов, в .NET встроены несколько реализаций ArrayPool<T>.
В этой статье я расскажу о внутреннем устройстве реализаций ArrayPool<T> в .NET, о подводных камнях, которые могут сделать пулинг неэффективным, о concurrent-структурах данных, а также о пулинге объектов, отличных от массивов.
▪ Читать
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Создайте API .NET за 3 минуты с помощью Chat GPT.
Знаете ли вы, что можно создать REST API на C# менее чем за 3 минуты?! Читайте дальше, чтобы узнать секреты быстрой разработки API .NET с помощью Chat-GPT. Давайте начнем!
▪ Читать
▪@Chatgpturbobot
@csharp_ci
Знаете ли вы, что можно создать REST API на C# менее чем за 3 минуты?! Читайте дальше, чтобы узнать секреты быстрой разработки API .NET с помощью Chat-GPT. Давайте начнем!
▪ Читать
▪@Chatgpturbobot
@csharp_ci
Дорожная карта для .NET-разработчика в 2023 году
Ник Чапсас делится своим видением относительно знаний, которыми должен обладать .NET-разработчик в 2023 году. Только вот странно, что по C# надо знать только C# 11, .NET 7 и .NET CLI.🤦♂️
🌐 Смотреть
Ник Чапсас делится своим видением относительно знаний, которыми должен обладать .NET-разработчик в 2023 году. Только вот странно, что по C# надо знать только C# 11, .NET 7 и .NET CLI.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
My .NET Developer Roadmap for 2023
Give the roadmap a star on GitHub: https://github.com/Elfocrash/.NET-Backend-Developer-Roadmap
Check out my courses at https://dometrain.com
Hello everybody I'm Nick and in this video I will show you my brand new roadmap for .NET developers for 2023. This…
Check out my courses at https://dometrain.com
Hello everybody I'm Nick and in this video I will show you my brand new roadmap for .NET developers for 2023. This…
public class Employee
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
public class Manager : Employee
{
private string name;
public new string Name
{
get { return name; }
set { name = value + ", Manager"; }
}
}
class Program
{
static void Main()
{
Manager m1 = new Manager();
m1.Name = "John";
((Employee)m1).Name = "Mary";
Console.WriteLine(m1.Name);
}
}
👉 Пишите ваше решение в комментариях👇
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1, 11, 21, 1211, 111221, …
Каждое последующее число генерируется из предыдущего путём конкатенции цифры, из которой состоит группа одинаковых цифр и количества цифр в этой группе, для каждой группы одинаковых цифр в числе. Например:
1 читается как «одна единица», то есть 11
11 читается как «две единицы», то есть 21
21 читается как «одна двойка, одна единица», то есть 1211
1211 читается как «одна единица, одна двойка, две единицы», то есть 111221
111221 читается как «три единицы, две двойки, одна единица», то есть 312211
Напишите алгоритм, который определяет n-й член последовательности. Входные данные: n — натуральное число от 1 до 30 включительно.
Вывод: n-й член последовательности.
Пример:
1. n = 1
Output: 1
2. n = 4
Output: 1211
Разбор
Идея простая, для генерации n-го члена мы генерируем предыдущие
n-1,
зная начальное значение для n=1
. Необходимо отслеживать кол-во последовательных символов и ставить это число перед самим символом. Все детали смотрите в реализации.Реализация
using System;
using System.Collections.Generic;
public class Program
{
public static string CountAndSay(int n)
{
if (n == 1)
{
return "1";
}
var arr = new List<byte>() { 1 };
for (int i = 2; i <= n; i++)
{
byte count = 1;
int len = arr.Count;
var val = arr[0];
var newNumber = new List<byte>();
for (int j = 1; j < len; j++)
{
if (arr[j] == val)
{
count++;
}
else
{
newNumber.Add(count);
newNumber.Add(val);
count = 1;
}
val = arr[j];
}
if (count > 0)
{
val = arr[len - 1];
newNumber.Add(count);
newNumber.Add(val);
}
arr = newNumber;
}
return string.Join("", arr);
}
public static void Main()
{
Console.WriteLine("UniLecs");
Console.WriteLine(CountAndSay(4)); // 1211
Console.WriteLine(CountAndSay(5)); // 111221
Console.WriteLine(CountAndSay(6)); // 312211
}
}
👉 Пишите ваше решение в комментариях👇
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Entity Framework Core Power Tools — инструмент для обратной разработки (reverse engineering), миграции и визуализация моделей для EF Core.
Инструмент стремится снизить планку для начала работы с EF Core, предоставляя удобный UI с обратной разработкой существующей базы данных, созданием миграций и визуализацией вашей модели DbContext.
🖥 Github
@csharp_ci
Инструмент стремится снизить планку для начала работы с EF Core, предоставляя удобный UI с обратной разработкой существующей базы данных, созданием миграций и визуализацией вашей модели DbContext.
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Цикл статей для тех, кто заботится об экономии наносекунд и оптимизации на уровне IL-кода. Кто знает, может вы работаете в хайлоад проектах или в геймдеве.
🚀 Array: for/foreach или unsafe
🚀 Dictionary<int, T>: очень специальный
🚀 Inline и throw
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Array: for/foreach или unsafe
Я много работаю с массивами, поэтому хотел бы освежить тему того, как наиболее быстро по нему перемещаться в C#. Речь пойдёт об экономии наносекунд и оптимизации на уровне IL-кода. Кажется, что в...
⚡️ Testcontainers для .NET
Проект для поддержки тестов с одноразовыми экземплярами Docker-контейнеров для всех совместимых версий .NET Standard.
Testcontainers построен на основе API .NET Docker и обеспечивает упрощенную реализацию для поддержки вашей тестовой среды.
🖥 Github
@csharp_ci
Проект для поддержки тестов с одноразовыми экземплярами Docker-контейнеров для всех совместимых версий .NET Standard.
Testcontainers построен на основе API .NET Docker и обеспечивает упрощенную реализацию для поддержки вашей тестовой среды.
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код ?
Anonymous Quiz
18%
Compile-time error
15%
Runtime error
58%
Int32 String
9%
String Int
DLR в C#. Ключевое слово dynamic
Хотя C# относится к статически типизированным языкам, в последних версиях языка были добавлены некоторые динамические возможности. Так, начиная с .NET 4.0 была добавлена новая функциональность под названием DLR (Dynamic Language Runtime). DLR представляет среду выполнения динамических языков, например, таких языков как IronPython и IronRuby.
Чтобы понять значение данного нововведение, нужно осознавать разичие между языками со статической и динамической типизицией. В языках со статической типизацией выявление всех типов и их членов - свойств и методов происходит на этапе компиляции. А в динамических языках системе ничего не известно о свойствах и методах типов вплоть до выполнения.
Благодаря этой среде DLR C# может создавать динамические объекты, члены которых выявляются на этапе выполнения программы, и использовать их вместе с традиционными объектами со статической типизацией.
Ключевым моментом использования DLR в C# является применение типов dynamic. Это ключевое слово позволяет опустить проверку типов во время компиляции. Кроме того, объекты, объявленные как dynamic, могут в течение работы программы менять свой тип. Например:
dynamic obj = 3; // здесь obj - целочисленное int
Console.WriteLine(obj); // 3
obj = "Hello world"; // obj - строка
Console.WriteLine(obj); // Hello world
obj = new Person("Tom", 37); // obj - объект Person
Console.WriteLine(obj); // Person { Name = Tom, Age = 37 }
record class Person(string Name, int Age)
;Несмотря на то, что переменная x меняет тип своего значения несколько раз, данный код будет нормально работать. В этом использование типов dynamic отличается от применения ключевого слова var. Для переменной, объявленной с помощью ключевого слова var, тип выводится во время компиляции и затем во время выполнения больше не меняется.
Также можно найти общее между использованием dynamic и типом object. Если в предыдущем примере мы заменим dynamic на object: object x = 3;, то результат будет тот же. Однако и тут есть различия. Например:
object obj = 24;
dynamic dyn = 24;
obj += 4; // так нельзя
dyn += 4; // а так можно
На строке
obj += 4;
мы увидим ошибку, так как операция += не может быть применена к типам object и int. С переменной, объявленной как dynamic, это пройдет, так как ее тип будет известен только во время выполнения.Еще одна отличительная особенность использования dynamic состоит в том, что это ключевое слово применяется не только к переменным, но и к свойствам и методам. Например:
class Person
{
public string Name { get;}
public dynamic Age { get; set; }
public Person(string name, dynamic age)
{
Name = name; Age = age;
}
// выводим зарплату в зависимости от переданного формата
public dynamic GetSalary(dynamic value, string format)
{
if (format == "string") return $"{value} euro";
else if (format == "int") return value;
else return 0.0;
}
public override string ToString() => $"Name: {Name} Age: {Age}";
}
В классе Person определено динамическое свойство Age, поэтому при задании значения этому свойству мы можем написать и person.Age=22, и person.Age="twenty-two". Оба варианта будут допустимыми. А через параметр age в конструкторе этому свойству можно передать любое значение.
Также есть метод GetSalary, который возвращает значение dynamic. Например, в зависимости от параметра мы можем вернуть или строковое представление суммы дохода или численное. Также метод принимает dynamic в качестве параметра. Таким образом, мы можем передать в качестве значения дохода как целое, так и дробное число или строку. Посмотрим на конкретное применение:
dynamic tom = new Person("Tom", 22);
Console.WriteLine(tom);
Console.WriteLine(tom.GetSalary(28, "int"));
dynamic bob = new Person("Bob", "twenty-two");
Console.WriteLine(bob);
Console.WriteLine(bob.GetSalary("twenty-eight", "string"));
Консольный вывод программы:
Name: Tom Age: 22
28
Name: Bob Age: twenty-two
twenty-eight euro
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM