Дана строка, содержащая сумму натуральных чисел. Найдите результат вычислений

Дана строка, содержащая сумму натуральных чисел. Найдите результат вычислений. Например: 2.5 + 3.5 + 2.5 ответ будет 8.5. Я сделал набросок программы, но что-то дальше я не очень понимаю что нужно сделать.

Вот код:

static void Main(string[] args)
{
    string s = "3.5 + 1.5 + 1.5";
    string numbers = "1234567890";
    string x = "";
    isdigit( s,numbers,x);
}

static void isdigit (string s,string numbers,string x)
{         
    s.Split(" ");
    for(int i = 0;i < s.Length; i++)
    { 
        for(int j = 0; j < numbers.Length; j++)
        {
            if(s[i] == numbers[j] && s[i] + 1 =='.' && s[i] + 2 == numbers[j])
            {
                x += s[i];
            }
            else
            {
                Console.WriteLine("Данный пример не подхоит по условию.");
            }
        }
        Console.Write(x);
    }
}

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

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

Натуральное число.

Если ваши числа сделать натуральными, то получится всё весьма просто, постараюсь без Linq, хотя с ним было бы еще проще.

static void Main(string[] args)
{
    string s = "3 + 2 + 1"; // должно получиться 6
    try
    {
        Console.WriteLine(s + " = " + ComputeSum(s));
    }
    catch (Exception ex)
    {
        Console.WriteLine("Не удалось посчитать сумму, ошибка: " + ex.Message);
    }
}

private static int ComputeSum(string expression)
{
    string[] tokens = expression.Split('+');
    int sum = 0;
    foreach (string token in tokens)
    {
        sum += int.Parse(token);
    }
    return sum;
}

Вывод в консоль

3 + 2 + 1 = 6

Без try-catch, при условии что все числа натуральные.

static void Main(string[] args)
{
    string s = "3 + 2 + 1";
    int sum = ComputeSum(s);
    if (sum >= 0)
        Console.WriteLine(s + " = " + sum);
    else
        Console.WriteLine("Не удалось посчитать сумму");
}

private static int ComputeSum(string expression)
{
    string[] tokens = expression.Split('+');
    int sum = 0;
    foreach (string token in tokens)
    {
        if (int.TryParse(token, out int number))
            sum += number;
        else
            return -1;
    }
    return sum;
}
→ Ссылка
Автор решения: VladD

Тот же вариант, но с LINQ.

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
var result = s.Split('+').Sum(double.Parse);

И да, ваши числа не натуральные.

→ Ссылка