Реализуйте интерфейс парсера IP-адресов: разделите строку raw по separator, верните IReadOnlyCollection<IPAddress>; при null выбросьте ArgumentNullException, при пустом separator — ArgumentException, при невалидном IP — FormatException.

Проверьте аргументы, разделите raw по строковому separator и преобразуйте каждый фрагмент через IPAddress.TryParse. Для первого некорректного адреса выбросьте FormatException.

Короткий ответ

Что ответить на собеседовании

Проверьте аргументы, разделите raw по строковому separator и преобразуйте каждый фрагмент через IPAddress.TryParse. Для первого некорректного адреса выбросьте FormatException.

Подробный разбор

Ответ с пояснениями

Проверьте аргументы, разделите raw по строковому separator и преобразуйте каждый фрагмент через IPAddress.TryParse. Для первого некорректного адреса выбросьте FormatException.

Один из возможных контрактов и его реализация:

using System;
using System.Collections.Generic;
using System.Net;

public interface IIpParser
{
    IReadOnlyCollection<IPAddress> Parse(string raw, string separator);
}

public sealed class IpParser : IIpParser
{
    public IReadOnlyCollection<IPAddress> Parse(string raw, string separator)
    {
        if (raw == null) throw new ArgumentNullException(nameof(raw));
        if (separator == null) throw new ArgumentNullException(nameof(separator));
        if (separator.Length == 0) throw new ArgumentException("Empty separator", nameof(separator));
        var result = new List<IPAddress>();
        foreach (var item in raw.Split(new[] { separator }, StringSplitOptions.None))
        {
            if (!IPAddress.TryParse(item.Trim(), out var address))
                throw new FormatException("Invalid IP address");
            result.Add(address);
        }
        return result.AsReadOnly();
    }
}

Здесь пробелы вокруг адресов допускаются, дубликаты сохраняются, а пустая строка или пустой элемент считаются ошибкой формата. IPAddress.TryParse принимает и некоторые нестандартные сокращённые записи IPv4; если допустим только строгий dotted-decimal, потребуется дополнительная проверка.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее