Обычно классы параллельного программирования объясняют тупик примерами. Я думаю, что проблема Обедающих Философов будет хорошим примером для использования. Вы можете разработать этот пример на Java и объяснить возникновение тупика, когда два философа держат левую вилку и ждут правой вилки. (или наоборот).
Я изучил много концепций параллельного программирования, используя эти примеры, реализованные на Java.
Многие проекты, которые я видел, используют статический класс Guard
.
public static class Guard {
public static void ArgumentIsNotNull(object value, string argument) {
if (value == null)
throw new ArgumentNullException(argument);
}
}
По моему мнению, это делает код намного чище.
Guard.ArgumentIsNotNull(arg1, "arg1");
Если вы не хотите идти по пути кодовых контрактов, один из способов упростить его - удалить фигурные скобки:
public void SomeMethod<T>(string var1, IEnumerable<T> items, int count)
{
if (string.IsNullOrEmpty(var1))
throw new ArgumentNullException("var1");
if (items == null)
throw new ArgumentNullException("items");
if (count < 1)
throw new ArgumentOutOfRangeException("count");
... etc ....
}
Помимо этого, есть несколько способов моделирования Контракты кода, если вы возражаете, что .Net 4.0 еще не прайм-тайм:
http://geekswithblogs.net/Podwysocki/archive/2008/01/22/118770.aspx
Вы можете подумать о рефакторинге, чтобы ввести пустой объект .