Anonymous Quiz
18%
private
9%
protected
61%
internal
13%
protected internal
В C# списки (List) и массивы (Array) являются двумя основными типами коллекций, но они имеют различия в своих свойствах, возможностях и сценариях использования. Рассмотрим основные различия между ними.
int[] numbers = new int[5]; // Массив из 5 элементов
string[] words = new string[] { "apple", "banana", "cherry" };
int firstNumber = numbers[0]; // Быстрый доступ по индексу
Length. int length = numbers.Length; // Длина массива
List<int> numbersList = new List<int> { 1, 2, 3, 4, 5 };
numbersList.Add(6); // Добавление элемента увеличивает размер списка
List<string> wordsList = new List<string> { "apple", "banana", "cherry" };
int firstNumberInList = numbersList[0]; // Быстрый доступ по индексу
Add, Remove, Find, Count и многие другие, что делает их более удобными для работы с динамическими данными. int count = numbersList.Count; // Количество элементов в списке
numbersList.Remove(3); // Удаление элемента
Массив:
int[] numbersArray = new int[] { 1, 2, 3, 4, 5 };
int firstElement = numbersArray[0];
numbersArray[2] = 10;
Console.WriteLine(numbersArray.Length);Список:
List<int> numbersList = new List<int> { 1, 2, 3, 4, 5 };
numbersList.Add(6);
int firstElementInList = numbersList[0];
numbersList[2] = 10;
Console.WriteLine(numbersList.Count);
numbersList.Remove(4);Массивы имеют фиксированный размер и обеспечивают быстрый доступ к элементам, но менее гибкие. Списки имеют динамический размер и предоставляют больше методов для работы с элементами, но могут быть менее эффективны по памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Anonymous Quiz
22%
virtual
73%
abstract
4%
sealed
1%
static
👍1
В C#
post чаще всего ассоциируется с HTTP POST-запросами, которые используются для отправки данных на сервер. Это один из основных методов HTTP-протокола наряду с GET, PUT, DELETE и другими. Для выполнения HTTP POST-запроса в C# часто используется класс
HttpClient, который предоставляет удобные методы для взаимодействия с веб-сервисами.System.Net.Http (обычно он включен по умолчанию в .NET Core проектах).using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Создаем HttpClient
using (HttpClient client = new HttpClient())
{
// URL-адрес, на который отправляется запрос
string url = "https://example.com/api/resource";
// Данные для отправки
var data = new
{
Name = "John Doe",
Age = 30
};
// Сериализуем данные в JSON
string jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(data);
// Создаем содержимое запроса
StringContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");
// Отправляем POST-запрос
HttpResponseMessage response = await client.PostAsync(url, content);
// Проверяем успешность ответа
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Запрос выполнен успешно.");
}
else
{
Console.WriteLine($"Ошибка: {response.StatusCode}");
}
}
}
}
HttpClient используется для отправки HTTP-запросов и получения HTTP-ответов от ресурса, определенного по URI.JsonConvert.SerializeObject.StringContent, который содержит сериализованные данные, кодировку и тип содержимого.PostAsync отправляет POST-запрос на указанный URL с указанным содержимым.IsSuccessStatusCode.HTTP POST-запрос используется для отправки данных на сервер, обычно для создания новых ресурсов. В C# для выполнения POST-запросов часто используется класс
HttpClient, который позволяет отправлять данные в формате JSON или других форматах.Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
В C# и веб-программировании
PUT обычно относится к HTTP PUT-запросам, которые используются для обновления ресурсов на сервере. Это один из основных методов HTTP-протокола наряду с GET, POST, DELETE и другими.Для выполнения HTTP PUT-запроса в C# часто используется класс
HttpClient, который предоставляет удобные методы для взаимодействия с веб-сервисами.System.Net.Http (обычно он включен по умолчанию в .NET Core проектах).using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Создаем HttpClient
using (HttpClient client = new HttpClient())
{
// URL-адрес, на который отправляется запрос
string url = "https://example.com/api/resource/1"; // Предполагается, что ресурс с ID 1 уже существует
// Данные для отправки
var data = new
{
Name = "John Doe",
Age = 31 // Обновляем возраст
};
// Сериализуем данные в JSON
string jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(data);
// Создаем содержимое запроса
StringContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");
// Отправляем PUT-запрос
HttpResponseMessage response = await client.PutAsync(url, content);
// Проверяем успешность ответа
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Ресурс успешно обновлен.");
}
else
{
Console.WriteLine($"Ошибка: {response.StatusCode}");
}
}
}
}
HttpClient используется для отправки HTTP-запросов и получения HTTP-ответов от ресурса, определенного по URI.JsonConvert.SerializeObject.StringContent, который содержит сериализованные данные, кодировку и тип содержимого.PutAsync отправляет PUT-запрос на указанный URL с указанным содержимым.HTTP PUT-запрос используется для обновления существующего ресурса или создания ресурса, если он не существует. В C# для выполнения PUT-запросов часто используется класс
HttpClient, который позволяет отправлять данные в формате JSON или других форматах. PUT-запросы идемпотентны, что означает, что многократное выполнение одного и того же запроса приведет к одному и тому же результату.Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Anonymous Quiz
26%
Func<int>
16%
Action<int>
10%
Predicate<int>
48%
Func<int, string>
В C# и веб-программировании
DELETE обычно относится к HTTP DELETE-запросам, которые используются для удаления ресурсов на сервере. Это один из основных методов HTTP-протокола наряду с GET, POST, PUT и другими.Для выполнения HTTP DELETE-запроса в C# часто используется класс
HttpClient, который предоставляет удобные методы для взаимодействия с веб-сервисами.System.Net.Http (обычно он включен по умолчанию в .NET Core проектах).using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Создаем HttpClient
using (HttpClient client = new HttpClient())
{
// URL-адрес, на который отправляется запрос
string url = "https://example.com/api/resource/1"; // Предполагается, что ресурс с ID 1 существует
// Отправляем DELETE-запрос
HttpResponseMessage response = await client.DeleteAsync(url);
// Проверяем успешность ответа
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Ресурс успешно удален.");
}
else
{
Console.WriteLine($"Ошибка: {response.StatusCode}");
}
}
}
}
HttpClient используется для отправки HTTP-запросов и получения HTTP-ответов от ресурса, определенного по URI.DeleteAsync отправляет DELETE-запрос на указанный URL.IsSuccessStatusCode.HTTP DELETE-запрос используется для удаления ресурса на сервере. В C# для выполнения DELETE-запросов часто используется класс
HttpClient, который позволяет отправлять запросы и получать ответы от веб-сервисов. DELETE-запросы идемпотентны, что означает, что многократное выполнение одного и того же запроса приведет к одному и тому же результату — ресурс будет удален.Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
68%
sealed
9%
static
10%
override
13%
private
В HTTP-протоколе используется множество кодов состояния, чтобы указать результат выполнения запросов. Наиболее популярные и часто встречающиеся коды ошибок группируются в диапазоны, каждый из которых указывает на определенный тип ошибки. Вот основные коды ошибок HTTP, которые важно знать:
Эти коды состояния сообщают, что запрос был получен и продолжается обработка.
Эти коды состояния указывают на успешное выполнение запроса.
Эти коды состояния указывают, что клиент должен предпринять дополнительные действия для завершения запроса.
Эти коды состояния указывают на ошибки, которые произошли по вине клиента.
Эти коды состояния указывают на ошибки, произошедшие на сервере.
Наиболее популярные коды ошибок HTTP включают:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Anonymous Quiz
37%
is
38%
as
16%
cast
10%
typeof
Git — это система контроля версий, которая позволяет разработчикам отслеживать изменения в коде, сотрудничать с другими разработчиками, управлять версиями программного обеспечения и работать над проектами параллельно. Он стал стандартом в индустрии разработки программного обеспечения благодаря своим мощным возможностям и гибкости.
git log
git branch feature-branch
git checkout feature-branch
git merge main
git clone https://github.com/user/repo.git
git pull origin main
git push origin main
git remote add origin https://github.com/user/repo.git
git push -u origin main
git checkout <commit-hash>
git revert <commit-hash>
git init
git clone https://github.com/user/repo.git
git add .
git commit -m "Сообщение коммита"
git status
git log
git branch new-branch
git checkout new-branch
git merge new-branch
git push origin main
git pull origin main
Git нужен для отслеживания изменений в коде, управления версиями, сотрудничества между разработчиками и обеспечения резервного копирования проектов. Это мощная и гибкая система контроля версий, которая стала стандартом в разработке программного обеспечения.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Anonymous Quiz
14%
StringBuilder
13%
Array
70%
String
3%
List<T>
Обмен изменениями в базе данных в контексте контроля версий может быть сложным, поскольку базы данных не являются простыми текстовыми файлами и требуют особого подхода для синхронизации изменений. Вот несколько подходов и инструментов, которые можно использовать для управления версиями базы данных и обмена изменениями:
// Пример миграции с использованием Entity Framework
public partial class AddNewTable : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "NewTable",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_NewTable", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(name: "NewTable");
}
}
-- Пример SQL-скрипта для добавления нового столбца в таблицу
ALTER TABLE Users ADD BirthDate DATE;
dotnet ef migrations add AddNewTable
dotnet ef database update
flyway migrate
liquibase update
Для обмена изменениями в базе данных используется подход с миграциями, который позволяет управлять изменениями схемы базы данных. Инструменты, такие как Entity Framework Migrations, Flyway и Liquibase, помогают автоматизировать и управлять этим процессом. Миграции и скрипты изменений хранятся в системе контроля версий и применяются последовательно для синхронизации баз данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Anonymous Quiz
18%
ToList()
22%
FirstOrDefault()
53%
Where()
7%
Count()
В C#
partial классы позволяют определять один и тот же класс, структуру или интерфейс в нескольких файлах. Это удобно для организации кода, особенно при работе с автоматически генерируемыми файлами или при совместной работе нескольких разработчиков над одним классом.public partial class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public void PrintFullName()
{
Console.WriteLine($"{FirstName} {LastName}");
}
}
public partial class Person
{
public int Age { get; set; }
public void PrintAge()
{
Console.WriteLine($"Age: {Age}");
}
}
Person определен в двух отдельных файлах с помощью ключевого слова partial.Person в один класс. В результате, объект Person имеет все свойства и методы, определенные в обоих файлах.class Program
{
static void Main(string[] args)
{
Person person = new Person
{
FirstName = "John",
LastName = "Doe",
Age = 30
};
person.PrintFullName(); // Выведет: John Doe
person.PrintAge(); // Выведет: Age: 30
}
}
partial класса должны быть определены в одном и том же сборочном проекте.partial класса.Partial классы в C# позволяют разделять определение одного класса на несколько файлов. Это удобно для организации кода, совместной разработки и интеграции с инструментами, генерирующими код. Компилятор объединяет все части класса в один, что позволяет работать с ним как с обычным классом.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Anonymous Quiz
57%
Nullable<T>
15%
Object
6%
Any
23%
T?
В C#
partial методы позволяют объявлять метод в одной части partial класса и определять его реализацию в другой части. Это полезно для сценариев, когда часть класса с методами может быть автоматически сгенерирована, а другая часть может содержать их реализацию, добавляемую вручную разработчиком.Partial метод может быть объявлен в одной части partial класса и (опционально) определен в другой. Если метод не определен, компилятор просто игнорирует его объявление.Partial методы должны быть приватными.public, protected).void).out, но могут иметь параметры ref.public partial class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
partial void OnNameChanged();
public void ChangeName(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
OnNameChanged();
}
}
public partial class Person
{
partial void OnNameChanged()
{
Console.WriteLine($"Name changed to: {FirstName} {LastName}");
}
}
Person объявляется частичный метод OnNameChanged(), который вызывается в методе ChangeName.Person метод OnNameChanged определяется и содержит логику, которая выполняется при изменении имени.ChangeName вызывается и изменяет имя, вызывается метод OnNameChanged, который выводит сообщение на консоль.class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.ChangeName("John", "Doe");
// Выведет: Name changed to: John Doe
}
}
Partial методы в C# позволяют объявлять метод в одной части partial класса и определять его в другой. Они полезны для разделения кода между автоматически генерируемыми и вручную написанными частями. Если метод не определен, компилятор игнорирует его и все его вызовы, что упрощает интеграцию и улучшает организацию кода.Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
25%
async
10%
await
50%
Task
14%
parallel
😁10🤯1👾1
📌 Какие есть принципы ООП?
💬 Спрашивают в 56% собеседований
🤔 Объектно-ориентированное программирование (ООП) основывается на четырёх основных принципах, которые позволяют эффективно организовывать и структурировать программное обеспечение. Эти принципы включают инкапсуляцию, наследование, полиморфизм и абстракцию. Рассмотрим каждый из них подробнее:
1️⃣ Инкапсуляция:
Заключается в сокрытии деталей реализации объекта от других объектов. Это означает, что внутреннее состояние объекта защищено от прямого доступа, а изменение его состояния возможно только через методы, которые предоставляет этот объект. Инкапсуляция помогает уменьшить сложность программ и повысить их надёжность.
🤔 Пример:
public class BankAccount
{
private double balance; // Приватное поле, недоступное извне
public void Deposit(double amount)
{
if (amount > 0)
balance += amount;
}
public void Withdraw(double amount)
{
if (amount > 0 && balance >= amount)
balance -= amount;
}
public double GetBalance()
{
return balance;
}
}
2️⃣ Наследование:
Позволяет создавать новый класс на основе уже существующего класса. Новый класс наследует атрибуты и методы базового класса, что способствует повторному использованию кода и упрощению его расширения. В C# наследование реализуется с помощью ключевого слова.
🤔 Пример
public class Animal
{
public void Eat()
{
Console.WriteLine("Eating");
}
}
public class Dog : Animal // Класс Dog наследует от класса Animal
{
public void Bark()
{
Console.WriteLine("Barking");
}
}
3️⃣ Полиморфизм:
Это способность объекта использовать методы производного класса, несмотря на то, что он представлен ссылкой на базовый класс. Это позволяет объектам различных классов иметь различное поведение при вызове одних и тех же методов, что упрощает управление и расширение кода.
🤔 Пример:
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Some sound");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Woof");
}
}
4️⃣ Абстракция:
Позволяет сконцентрироваться на важных атрибутах объекта, игнорируя несущественные. Это достигается за счет определения классов, которые представляют абстрактные понятия и отражают функциональность и характеристики объектов, но не включают конкретные детали реализации.
🤔 Пример:
public abstract class Vehicle // Абстрактный класс
{
public abstract void Move(); // Абстрактный метод
}
public class Car : Vehicle
{
public override void Move()
{
Console.WriteLine("Car is moving");
}
}
🤔 Краткий ответ:
Эти четыре принципа в совокупности обеспечивают мощный фундамент для создания гибких, масштабируемых и легко поддерживаемых программных систем.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
💬 Спрашивают в 56% собеседований
🤔 Объектно-ориентированное программирование (ООП) основывается на четырёх основных принципах, которые позволяют эффективно организовывать и структурировать программное обеспечение. Эти принципы включают инкапсуляцию, наследование, полиморфизм и абстракцию. Рассмотрим каждый из них подробнее:
1️⃣ Инкапсуляция:
Заключается в сокрытии деталей реализации объекта от других объектов. Это означает, что внутреннее состояние объекта защищено от прямого доступа, а изменение его состояния возможно только через методы, которые предоставляет этот объект. Инкапсуляция помогает уменьшить сложность программ и повысить их надёжность.
🤔 Пример:
public class BankAccount
{
private double balance; // Приватное поле, недоступное извне
public void Deposit(double amount)
{
if (amount > 0)
balance += amount;
}
public void Withdraw(double amount)
{
if (amount > 0 && balance >= amount)
balance -= amount;
}
public double GetBalance()
{
return balance;
}
}
2️⃣ Наследование:
Позволяет создавать новый класс на основе уже существующего класса. Новый класс наследует атрибуты и методы базового класса, что способствует повторному использованию кода и упрощению его расширения. В C# наследование реализуется с помощью ключевого слова.
🤔 Пример
public class Animal
{
public void Eat()
{
Console.WriteLine("Eating");
}
}
public class Dog : Animal // Класс Dog наследует от класса Animal
{
public void Bark()
{
Console.WriteLine("Barking");
}
}
3️⃣ Полиморфизм:
Это способность объекта использовать методы производного класса, несмотря на то, что он представлен ссылкой на базовый класс. Это позволяет объектам различных классов иметь различное поведение при вызове одних и тех же методов, что упрощает управление и расширение кода.
🤔 Пример:
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Some sound");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Woof");
}
}
4️⃣ Абстракция:
Позволяет сконцентрироваться на важных атрибутах объекта, игнорируя несущественные. Это достигается за счет определения классов, которые представляют абстрактные понятия и отражают функциональность и характеристики объектов, но не включают конкретные детали реализации.
🤔 Пример:
public abstract class Vehicle // Абстрактный класс
{
public abstract void Move(); // Абстрактный метод
}
public class Car : Vehicle
{
public override void Move()
{
Console.WriteLine("Car is moving");
}
}
🤔 Краткий ответ:
Эти четыре принципа в совокупности обеспечивают мощный фундамент для создания гибких, масштабируемых и легко поддерживаемых программных систем.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
👍7👀1
Anonymous Quiz
12%
protected
77%
internal
10%
private
1%
public