Какие знаешь типы данных · C# Backend — JobPilot

Какие знаешь типы данных

C# Backend · 33%
Вопрос 3371 / #
Пример ответа

Коротко: В C# я работаю с широким спектром типов данных, включая встроенные примитивы, пользовательские структуры и ссылочные типы, что позволяет эффективно управлять памятью и логикой приложений.

  • int
  • long
  • float
  • double
  • decimal
  • bool
  • char
  • string
  • object
  • dynamic
  • enum
  • struct
  • class
  • interface
  • delegate
  • array
  • List<T>
  • Dictionary<TKey, TValue>
  • Tuple
  • Nullable<T>
  • var
  • record
  • Span<T>
  • Memory<T>
Ключевые идеи:
  • В C# типы данных делятся на значимые (value types) и ссылочные (reference types), что влияет на хранение в памяти и поведение при присваивании.
  • Я использую обобщённые типы (generics) для создания гибких и типобезопасных коллекций, таких как List<T> и Dictionary<TKey, TValue>.
  • Для работы с современными паттернами применяю record для неизменяемых данных и nullable reference types для предотвращения null-исключений.
Пример: Например, для хранения данных пользователя я могу определить record User(string Name, int Age), а для вычислений использовать decimal для финансовых операций, чтобы избежать ошибок округления.
Пример использования различных типов данных в C# для бэкенд-приложения
csharp
using System;
using System.Collections.Generic;

namespace DataTypesExample
{
    // Значимый тип (value type)
    public struct Point
    {
        public int X;
        public int Y;
    }

    // Ссылочный тип (reference type) как record для неизменяемости
    public record User(string Name, int Age);

    class Program
    {
        static void Main()
        {
            // Примитивные типы
            int count = 10;
            double price = 19.99;
            bool isActive = true;
            string message = "Hello, C#!";

            // Nullable тип
            int? nullableInt = null;
            if (nullableInt.HasValue)
                Console.WriteLine($"Value: {nullableInt.Value}");

            // Обобщённая коллекция
            List<User> users = new List<User>
            {
                new User("Alice", 30),
                new User("Bob", 25)
            };

            // Словарь (Dictionary)
            Dictionary<string, int> scores = new Dictionary<string, int>
            {
                ["Alice"] = 95,
                ["Bob"] = 87
            };

            // Использование struct
            Point p = new Point { X = 5, Y = 10 };
            Console.WriteLine($"Point: ({p.X}, {p.Y})");

            // Динамический тип
            dynamic dynamicVar = "I can be anything";
            dynamicVar = 42; // Теперь это int

            // Вывод
            foreach (var user in users)
                Console.WriteLine($"User: {user.Name}, Age: {user.Age}");
        }
    }
}
Вопросы для интервьюера:
  • Как вы выбираете между struct и class в C#?Я использую struct для небольших, неизменяемых данных, где важна производительность, и class для сложных объектов с поведением и наследованием.
  • Какие преимущества дают обобщённые типы (generics) в бэкенд-разработке?Generics обеспечивают типобезопасность, уменьшают дублирование кода и повышают производительность, избегая упаковки/распаковки.
Практический совет (на неделю):
  1. Для финансовых расчётов всегда используйте decimal вместо float или double, чтобы избежать ошибок с плавающей точкой.
  2. Применяйте record для DTO и моделей в API, чтобы упростить сравнение и сериализацию данных.

Мы используем cookie для улучшения сайта. Продолжая пользоваться сайтом, вы соглашаетесь с политикой cookie и политикой конфиденциальности.