#c#
#c#
Вопрос:
каков лучший способ реализации этого шаблона?:
void ValidateId(int Id, MyObject[] objects)
{
foreach (var myObject in objects)
{
if (Id == myObject.Id){
return;
}
}
throw new Exception("Invalid Id");
}
Ответ №1:
во-первых, я бы не стал создавать исключение, если ситуация не является исключительной. Скорее, предпочитаю возвращать bool и обрабатывать возвращаемое значение false с приятным дружественным сообщением об ошибке.
что касается проверки, вы можете использовать Linq….
bool ValidateId(int Id, MyObject[] objects)
{
return objects.Any( o=>o.Id == Id );
}
Комментарии:
1. Да, в случае недопустимого идентификатора требуется исключение в моем коде. Я не очень хорошо знаком с Linq, поэтому, возможно, мне пора начать использовать его чаще, приветствую.
2. @lockstock: здесь он вернет false, если идентификатор недопустим.
3. @lockstock, если вы собираетесь проверить linq, вам следует изучить возможность использования Linqpad. это позволяет вам запускать запросы linq без необходимости создавать целую программу, и это даже подключит к базам данных SQL, чтобы вы могли запускать запросы к данным SQL.
Ответ №2:
Использовать Contains()
http://www.dotnettoad.com/index.php?/archives/10-Array .Contains.html
Комментарии:
1. Да, я мог бы переопределить. Equals() для MyObject только проверяет, равны ли идентификаторы, но есть ли другой способ?
2. Вы упустили много деталей о том, как сделать этот метод полезным, особенно в свете других, более простых способов.