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 шт):
Скорее всего, это проблема 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;
}
}