Только для проверки я понимаю Вас - Вы в основном хотите выполнить итерации через все результаты, только вызвать какие-либо побочные эффекты произойти?
Побочные эффекты обычно являются плохой идеей точно, потому что вещи более трудно понять с этим видом логики. Однако самый легкий способ сделать это и вызвать полную оценку должно, вероятно, просто выполнить итерации через него:
foreach (var result in aggregationResult)
{
// Deliberately empty; simply forcing evaluation of the sequence.
}
, Кроме того, Вы могли использовать LastOrDefault () для предотвращения всего копирования, привлеченного в ToArray (). количество () будет хорошо, пока результат не реализует IList
(который включает ярлык).
Попробуйте следующее:
public class MyClass
{
private URL url;
public MyClass(URL url)
{
this.url = url;
}
public MyClass(String urlString) throws MyPackageSpecificException
{
this(toURL(urlString));
}
private static URL toURL(String urlString) throws MyPackageSpecificException
{
try
{
return new URL(urlString));
}
catch (MalformedURLException e)
{
throw new MyPackageSpecificException(e);
}
}
}
Если это соответствует вашему коду, вы можете использовать вместо этого используйте статический метод создания:
private MyClass(String urlString) { ... }
public static MyClass createMyClass(String urlString) throws MyPackageSpecificException {
try {
new MyClass(urlString);
catch (Exception e) {
throw new MyPackageSpecificException(e);
}
}
Вместо использования this () используйте общий метод init (), который принимает аргумент URL таким образом, чтобы он не был первой строкой конструктора.
public MyClass(String url) throws MyPackageSpecificException
{
try
{
init(new URL(url));
}
catch (MalformedURLException e)
{
throw new MyPackageSpecificException(e);
}
}
public MyClass(URL url)
{
init(url);
}
private void init(URL url)
{
// do constructor work here
}