Как в C# вернуть несколько значений из одного метода (3 способа)

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

Использование отдельного класса или структуры

С точки зрения объектно-ориентированного программирования самым правильным способом вернуть несколько значений из одного метода будет создание отдельного класса или структуры с нужными свойствами или полями. Пример ниже демонстрирует такой подход на примере класса Person:

class Person
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
}

…

public Person GetPerson()
{
    return new Person { FirstName = "Simon", LastName = "Smith" };
}

Таким образом, возвращая один объект класса Person, мы получаем два значения: FirstName и LastName.

Использование кортежей (Tuple)

Вернуть несколько значений из одного метода можно при помощи кортежей:

public Tuple< string, string> GetPerson()
{
    return new Tuple< string, string>("Simon", "Smith");
}

…

var person = GetPerson();

var firstName = person.Item1;

var lastName = person.Item2;

Начиная с C# 7, этот способ выглядит более лаконичным:

public (string firstName, string lastName) GetPerson()
{
    return ("Simon", "Smith");
}

…

(var firstName, var lastName) = GetPerson();

Использование out и ref параметров

Пример ниже демонстрирует способ возврата нескольких значений из одного метода при помощи out параметров:

public void GetPerson(out string firstName, out string lastName)
{
    firstName = "Simon";
    lastName = "Smith";
}

…

GetPerson(out var firstName, out var lastName);

ВКонтакте

Каталог онлайн-сервисов для работы с ВКонтакте. Здесь Вы можете просмотреть статистику страницы любого пользователя ВКонтакте или воспользоваться множеством других онлайн-инструментов для автоматизации различных задач в социальной сети ВКонтакте.

Инстаграм

Каталог онлайн-сервисов для работы с Инстаграм. Здесь Вы можете скачать фотографии и видеозаписи в хорошем качестве из Инстаграм, используя ссылку на запись.