Я бы хотел общее решение, но в качестве примера предположим, что у меня есть IEnumerable<string>
, где некоторые могут быть проанализированы как целые числа, а некоторые не могут.
var strings = new string[] { "1", "2", "notint", "3" };
Очевидно, если бы я сделал Select(s => int.Parse(s, temp))
, он перебрасывал бы исключение при перечислении.
В этом случае я мог бы сделать .All(s => int.TryParse(s, out temp))
во-первых, однако мне нужно общее решение, в котором я не должен дважды перечислять IEnumerable
.
В идеале я хотел бы иметь возможность сделать следующее, которое вызывает мой метод исключения исключений магии:
// e.g. parsing strings
var strings = new string[] { "1", "2", "notint", "3" };
var numbers = strings.Select(s => int.Parse(s)).SkipExceptions();
// e.g. encountering null object
var objects = new object[] { new object(), new object(), null, new object() }
var objecttostrings = objects.Select(o => o.ToString()).SkipExceptions();
// e.g. calling a method that could throw
var myClassInstances = new MyClass[] { new MyClass(), new MyClass(CauseMethodToThrow:true) };
var myClassResultOfMethod = myClassInstances.Select(mci => mci.MethodThatCouldThrow()).SkipExceptions();
Как я могу написать метод расширения SkipExceptions()
?
Некоторые отличные ответы для метода SelectSkipExceptions()
, однако мне интересно, может ли быть создан метод SkipExceptions()
в тех же строках, что и AsParallel()
.