Array.Find с делегатом.Что он возвращает, если не найден? - PullRequest
7 голосов
/ 01 августа 2011

У меня есть Array<Person> myArray, и я использую следующий код

myArray.Find(o => o.name.Equals("John"));

Эта статья в состояниях Msdn:

Возвращаемое значение

Тип: T

Первый элемент, который соответствует условиям, определенным указанным предикатом, если он найден;в противном случае значение по умолчанию для типа T.

Если бы у меня был Array<int>, значением по умолчанию было бы ноль.Но в моем случае я использую класс.Допустим, Array<Person>.

Что будет по умолчанию для моего класса и как я могу обработать не найденный случай с помощью делегата?

Ответы [ 2 ]

13 голосов
/ 01 августа 2011

По умолчанию для любого ссылочного типа (класс, интерфейс, делегат) указана пустая ссылка. Значением по умолчанию для любого типа значения является значение, в котором все поля типа являются значениями по умолчанию для этого поля - таким образом, вы получите 0, \0, false и т. Д.

Подробнее см. MSDN .

4 голосов
/ 01 августа 2011

Если предположить, что Person является ссылочным типом, значением по умолчанию для него будет ноль.

Поэтому вызов Array.Find () вернет ноль, если условие не будет выполнено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...