C# Метод возвращающий разные типы данных

Пример кода

    using System;
                    
public class Program
{
    public static void Main()
    {
        var res = GetInitialized();
        if(res is bool)
            Console.WriteLine("bool");
        else
            Console.WriteLine("string");
    }
    private static object GetInitialized(string res = null)
        {
            object result = true;
            if (res == null)
                result = false;
            else
                result = "Не пустой входной параметр";
            return result;
        }
}

Какими вариантами ещё можно возвращать разные типы данных?


Ответы (1 шт):

Автор решения: rotabor

Скорее всего, это проблема XY. У вас, Иван, похоже проблема в чём-то другом. Вы подумали, что её можно решить, возвращая разные типы данных, но как это сделать - это тоже проблема.

Если просто нужно вернуть какие-то данные, то для этого есть либо параметры, передающиеся по ссылке (модификатор ref), либо выходные параметры (модификатор out). Смотрите документацию по применению.

Обычно метод возвращает результат операции. Если это какой-то проверочный метод, как, например, Parse/TryParse, то либо вызывается исключение (Parse), либо возвращается логическое значение (TryParse).

public static bool TryParse (string? s, out int result);

А вот само значение возвращается через аргумент result, который с модификатором out.

Ещё есть кортежи (https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-tuples), которые позволяют возвращать несколько значений различных типов.

Возможно, нужно сделать так:

    private static bool GetInitialized(string res = null, out string status)
    {
        if (res == null)
        {
            status = "Пустой входной параметр";
            return false;
        }
        else
        {
            status = "Не пустой входной параметр";
            return true;
        }
    }
→ Ссылка