// Имя может использоваться, потому что его свойство Name // относится к членам интерфейса IPhoneNumber, на который // накладывается ограничение, if(phList[i].Name == name) return phList[i];
}
// Имя отсутствует в списке, throw new NotFoundException();
}
// Найти и возвратить сведения о телефоне по заданному номеру, public Т FindByNumber(string number) { for(int i=0; i
// Номер телефона также может использоваться, поскольку его // свойство Number относится к членам интерфейса IPhoneNumber, // на который накладывается ограничение.
if(phList[i].Number == number) return phList[i];
}
// Номер телефона отсутствует в списке, throw new NotFoundException ();
}
// ...
}
// Продемонстрировать наложение ограничения на интерфейс, class UselnterfaceConstraint { static void Main() {
// Следующий код вполне допустим, поскольку //в классе Friend реализуется интерфейс IPhoneNumber. PhoneList
try {
// Найти номер телефона по заданному имени друга.
Friend frnd = plist.FindByName("Гари") ;
Console.Write(frnd.Name + ": " + frnd.Number);
if(frnd.IsWorkNumber)
Console.WriteLine (" (рабочий)"); else
Console.WriteLine();
} catch(NotFoundException) {
Console.WriteLine("He найдено");
}
Console.WriteLine();
// Следующий код также допустим, поскольку в классе Supplier // также реализуется интерфейс IPhoneNumber.
PhoneList
try {
// Найти наименование поставщика по заданному номеру телефона. Supplier sp = plist2.FindByNumber("555-2564");
Console.WriteLine(sp.Name + ": " + sp.Number);
} catch(NotFoundException) {
Console.WriteLine("He найдено");
}
// в классе EmailFriend НЕ реализуется интерфейс IPhoneNumber.
// PhoneList
// new PhoneList
}
}