Добавить / вставить двойную строку И в список - PullRequest
0 голосов
/ 09 апреля 2020

так быстро. Можно ли вставить двойной И строку в список? как это:

 if (input2 == 0)  // this boolean checks if the first number is devided by zero, then:
                {
                    listOfResults.Insert(index: temp, item: "You divided by 0! Wait, thats illegal"); // and thats what i want, to add a string into the position of the list when the input is 0
                }
                else
                {
                    result = (double)input1 / (double)input2; // the input numbers are int but i cast them to double 
                    listOfResults.Insert(index: position, item: result);
                }

Мой ввод: 3 и 2, 6 и 3, -4 и 0, 1 и 2, я делю каждое первое число на второе число ввода.
Выход должен быть как:

1,5
2
Вы разделены на 0! Подождите, это незаконно
0,5
Так можно ли хранить двойные И строки для каждой позиции в списке?

Ответы [ 3 ]

1 голос
/ 09 апреля 2020

Да, вы можете создать List <объект>, который может содержать любой тип данных, double, string, int, другие объекты и т. Д. c.

Лучшим вариантом может быть определение объекта Result. например,

class Result
{
    public bool Error { get; set; } = false;
    public double Value { get; set; }
    public string ErrorMessage { get; set; } = "";
}

А затем сохраните список List , чтобы вам не приходилось преобразовывать или проверять типы.

1 голос
/ 09 апреля 2020

Вы можете использовать список кортежей:

var tupleList = new List<(double, string)>();
tupleList.Add((2.5, "a string"));

Вот что я бы сделал, учитывая ваш код:

var listOfResults = new List<(double? result, string error)>();
if (input2 == 0)
{
    listOfResults.Insert(index: temp, item: (null, "You divided by 0! Wait, thats illegal"));
}
else
{
    result = (double)input1 / input2;
    listOfResults.Insert(index: position, item: (result, null));
}

А вот как напечатать вывод:

foreach (var item in listOfResults)
{
    if (item.result.HasValue)
        Console.WriteLine(item.result);
    else
        Console.WriteLine(item.error);
}
1 голос
/ 09 апреля 2020

Список разрешит оба типа. Вы можете использовать typeof () == typeof (double), например, при использовании значений, или просто ToString ().

static void Main(string[] args)
{
   List<object> myData = new List<object>()
   {
                1.234,
                -0.1,
                "divide by zero",
                100.0
   };

   foreach (object item in myData)
   {
      Console.WriteLine(item.ToString());
   }
}
...