Console.Write(s == "sum" ? String.Format("Сумма введённых чисел = '{0}'\n", arr.Sum()) : "")
падает.. проверяли у себя?Ну так то да, ну если не будет никаких действий в внутри цикла, придется {} скобки ставитьс чего вдруг? ))
;
;))) .. не поверю что C# 6 этого не допускает. это уже опять же сишное наследие - пустой оператор )))Ну осталось только преподавателю теперь это всё показать, чтобы глаза на лоб полезли :D.. ну да, я бы тоже не проч взглянуть на препода, в подобной ситуации )))
var arr = Array.Empty<int>();
for (var s = ""; (s = Console.ReadLine()) != "exit"; arr = arr.Append(int.Parse(s)).ToArray(), Console.Write(s == "sum" ? $"Сумма введённых чисел = '{arr.Sum()}'" : "")) ;
// тут for один оператор, по тому имеет право на одну строку
// и да, это ужас тоже работает )))
int.TryParse
есть int.Parse
, а еще Convert
))) using System;
using System.Linq;
namespace array_no_list
{
static class Program
{
static void Main(string[] args)
{
var arr = Array.Empty<int>();
var s = "";
while ((s = Console.ReadLine()) != "exit")
if (s == "sum")
Console.WriteLine($"Сумма введённых чисел = '{arr.Sum()}'");
else if (int.TryParse(s, out var result))
arr = arr.Append(result).ToArray();
}
}
}
arr = arr.Append(result).ToArray();
смотрится (да и читается) лучше и проще using System;
using System.Linq;
namespace array_no_list
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[0];
while (true)
{
string s = Console.ReadLine();
switch (s)
{
case "exit":
return;
case "sum":
Console.WriteLine(String.Format("Сумма введённых чисел = '{0}'", arr.Sum()));
break;
default:
int result;
if (int.TryParse(s, out result))
arr = arr.Concat(new int[] { result }).ToArray();
break;
}
}
}
}
}
using System;
using System.Linq;
namespace array_no_list
{
class Program
{
static void Main(string[] args)
{
var arr = Array.Empty<int>();
var s = "";
while ((s = Console.ReadLine()) != "exit")
if (s == "sum")
Console.WriteLine($"Сумма введённых чисел = '{arr.Sum()}'");
else if (int.TryParse(s, out var result))
arr = arr.Concat(new int[] { result }).ToArray();
}
}
}
...
// интерполяция строк тут удобнее
Console.WriteLine($"Сумма введённых чисел = '{arr.Sum()}'");
...
// предварительное объявление result не требуется
if (int.TryParse(s, out var result))
arr = arr.Concat(new int[] { result }).ToArray();
if
-ы, только без скобок (тут они реально не нужны, все действия однострочные). то итоговая конструкция будет гораздо компактнее и элегантнее, чем с использованием switch
По поводу того, что они плодятся и не закрываются - тоже прекрасно понимаю.
Не сразу весь пул потоков исчезает, а постепенно - значит после запроса, поток должен начать выполняться. Если бы он завис в середине метода, (1) то это показал бы стектрейс потока. А так складывается впечатление, что вместо того, чтобы вернуться в пул(2), он блокируется где-то на уровне системных библиотек (3). UI поток практически всё время свободен, так что они точно не пытаются в него попасть.
В любом случае, большое спасибо.для этого есть отметки. во избежание недопонимания - отметки это не тольк геймификация/мотивация. это конкретный функционал данного ресурса - индикатор ценности/значимости ответа, в том числе с обсуждением, для других посетителей, которые могут искать ответ на такйо же, или сходный вопрос.. (.. ну а лично я, просто удаляю свой ответ через тайм аут, если он не возымел таковой ценности ))
повисание потоков происходит в сторонней библиотекеу меня вызывает только один рефлекс - библиотеку(и) в студию!
про вообще EFI не говорим - там еще один раздел добавляется
слегка офтоп. поставил на виртуалку вынь10 2004 (родной iso 19041.84 ставится без признаков инсайдерства. как релиз). таки расклад опять уже другой (на скрине MBR)