Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Last active October 7, 2025 06:30
Show Gist options
  • Save sunmeat/75343935ac1bab62f831f59528e19cc7 to your computer and use it in GitHub Desktop.
Save sunmeat/75343935ac1bab62f831f59528e19cc7 to your computer and use it in GitHub Desktop.
as is operators C#
using System.Text;
class Program
{
static void Main()
{
Console.OutputEncoding = Encoding.UTF8;
// у .net оператори as та is використовуються для перевірок та перетворень типів даних
object someObject = "Це рядок";
// оператор as використовується для спроби перетворення об'єкта до вказаного типу
// якщо перетворення неможливе, результатом буде null, А НЕ ВИНЯТОК
// часто застосовується для роботи з об'єктами різних типів, для безпечного перетворення без винятків
string? asString = someObject as string;
if (asString != null)
{
Console.WriteLine("Перетворення пройшло успішно: " + asString);
}
else
{
Console.WriteLine("Перетворення не вдалося.");
}
// приклад з невдалим перетворенням: int не перетвориться на string
object intObject = 42;
string? failedAsString = intObject as string;
if (failedAsString != null)
{
Console.WriteLine("Перетворення int на string успішне: " + failedAsString);
}
else
{
Console.WriteLine("Перетворення int на string не вдалося.");
}
// оператор is використовується для перевірки, чи є об'єкт екземпляром вказаного типу
// повертає true, якщо перевірка успішна, і false, якщо об'єкт не є екземпляром вказаного типу
if (someObject is string)
{
Console.WriteLine("Об'єкт є рядком.");
}
else
{
Console.WriteLine("Об'єкт не є рядком.");
}
// у сучасному c# 9+ (актуально для .net 9) is підтримує pattern matching для безпечного розпакування
// це кращий підхід, ніж as, бо уникає null-перевірки та є більш виразним
if (someObject is string patternString)
{ // якщо перевірка пройшла (true), то значення someObject автоматично присвоюється
// новій локальній змінній patternString (типу string). і можна одразу використовувати
// patternString всередині блоку if, без додаткових перетворень чи перевірки на null
Console.WriteLine($"Об'єкт є рядком через pattern matching: {patternString}");
}
else
{
Console.WriteLine("Об'єкт не є рядком через pattern matching.");
}
// приклад pattern matching з int: показує тип та значення
if (intObject is int patternInt)
{
Console.WriteLine($"Об'єкт є int через pattern matching: {patternInt}");
}
else
{
Console.WriteLine("Об'єкт не є int.");
}
// приклад з null: is false для будь-якого типу
object? nullObject = null;
if (nullObject is string)
{
Console.WriteLine("Null є рядком.");
}
else
{
Console.WriteLine("Null не є рядком.");
}
// ці оператори часто використовуються для обробки об'єктів та типів даних у runtime
// коли точний тип об'єкта невідомий до моменту виконання програми
// вони допомагають уникнути помилок та забезпечують безпеку при роботі з типами даних
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment