<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FGenerics%2FGeneric_Constraint</id>
		<title>Csharp/C Sharp/Generics/Generic Constraint - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FGenerics%2FGeneric_Constraint"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Constraint&amp;action=history"/>
		<updated>2026-04-29T17:47:53Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Constraint&amp;diff=1368&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Constraint&amp;diff=1368&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Constraint&amp;diff=1369&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Constraint&amp;diff=1369&amp;oldid=prev"/>
				<updated>2010-05-26T11:45:48Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==A base class constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
class MyBase {&lt;br /&gt;
  public void hello() {&lt;br /&gt;
    Console.WriteLine(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class B : MyBase { }&lt;br /&gt;
class C { }&lt;br /&gt;
class Test&amp;lt;T&amp;gt; where T : MyBase {&lt;br /&gt;
  T obj;&lt;br /&gt;
  public Test(T o) {&lt;br /&gt;
    obj = o;&lt;br /&gt;
  }&lt;br /&gt;
  public void sayHello() {&lt;br /&gt;
    obj.hello();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class BaseClassConstraintDemo {&lt;br /&gt;
  public static void Main() {&lt;br /&gt;
    MyBase a = new MyBase();&lt;br /&gt;
    B b = new B();&lt;br /&gt;
    C c = new C();&lt;br /&gt;
    Test&amp;lt;MyBase&amp;gt; t1 = new Test&amp;lt;MyBase&amp;gt;(a);&lt;br /&gt;
    t1.sayHello();&lt;br /&gt;
    Test&amp;lt;B&amp;gt; t2 = new Test&amp;lt;B&amp;gt;(b);&lt;br /&gt;
    t2.sayHello();&lt;br /&gt;
    // The following is invalid because&lt;br /&gt;
    // C does not inherit MyBase.&lt;br /&gt;
    // Test&amp;lt;C&amp;gt; t3 = new Test&amp;lt;C&amp;gt;(c); // Error!&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==A new() constructor constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
class MyClass {&lt;br /&gt;
  public MyClass() {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Test&amp;lt;T&amp;gt; where T : new() {&lt;br /&gt;
  T obj;&lt;br /&gt;
  public Test() {&lt;br /&gt;
    // This works because of the new() constraint.&lt;br /&gt;
    obj = new T(); // create a T object&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ConsConstraintDemo {&lt;br /&gt;
  public static void Main() {&lt;br /&gt;
    Test&amp;lt;MyClass&amp;gt; x = new Test&amp;lt;MyClass&amp;gt;();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==A type parameter can be used as a constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
    using System;&lt;br /&gt;
    using System.Collections;&lt;br /&gt;
    public class Test{&lt;br /&gt;
        public static void Main(){&lt;br /&gt;
           X&amp;lt;Y, Z&amp;gt; obj=new X&amp;lt;Y, Z&amp;gt;();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class Z {&lt;br /&gt;
        public void MethodA() {&lt;br /&gt;
            Console.WriteLine(&amp;quot;Y::MethodA&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class Y: Z {&lt;br /&gt;
    }&lt;br /&gt;
    public class X&amp;lt;T1, T2&amp;gt; where T1:T2 {&lt;br /&gt;
        public void MethodB(T1 arg) {&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Combination of Overriding Generic Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
/*&lt;br /&gt;
Base Method    Derived Method        Comments&lt;br /&gt;
Nongeneric     Generic (open)        Permitted&lt;br /&gt;
Nongeneric     Generic (closed)      Permitted&lt;br /&gt;
Generic (open) Nongeneric            Not permitted&lt;br /&gt;
Generic (open) Generic (open)        Permitted; must use the same type parameters&lt;br /&gt;
Generic (open) Generic (closed)      Not permitted&lt;br /&gt;
Generic (closed) Nongeneric          Permitted&lt;br /&gt;
Generic (closed) Generic (closed)    Permitted&lt;br /&gt;
Generic (closed)  Generic (open)     Not permitted&lt;br /&gt;
*/&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==constructor constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
&lt;br /&gt;
public class Starter {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        MyClass obj = new MyClass();&lt;br /&gt;
        obj.MethodA&amp;lt;XClass&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MyClass {&lt;br /&gt;
    public void MethodA&amp;lt;T&amp;gt;()&lt;br /&gt;
                 where T : XClass, new() {&lt;br /&gt;
        Console.WriteLine(&amp;quot;MyClass.MethodA&amp;quot;);&lt;br /&gt;
        T obj = new T();&lt;br /&gt;
        obj.MethodB();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class XClass {&lt;br /&gt;
    public void MethodB() {&lt;br /&gt;
        Console.WriteLine(&amp;quot;XClass.MethodB&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Default Constructor Constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
    using System;&lt;br /&gt;
    public class Test{&lt;br /&gt;
        public static void Main(){&lt;br /&gt;
            Z obj=new Z();&lt;br /&gt;
            obj.MethodA&amp;lt;X&amp;gt;();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class Z {&lt;br /&gt;
        public void MethodA&amp;lt;T&amp;gt;() where T:X, new() {&lt;br /&gt;
            Console.WriteLine(&amp;quot;Z.MethodA&amp;quot;);&lt;br /&gt;
            T obj=new T();&lt;br /&gt;
            obj.MethodB();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class X{&lt;br /&gt;
        public void MethodB() {&lt;br /&gt;
            Console.WriteLine(&amp;quot;X.MethodB&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Demonstrate a reference constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
class MyClass {&lt;br /&gt;
}&lt;br /&gt;
class Test&amp;lt;T&amp;gt; where T : class {&lt;br /&gt;
  T obj;&lt;br /&gt;
  public Test() {&lt;br /&gt;
    // The following statement is legal only&lt;br /&gt;
    // because T is guaranteed to be a reference&lt;br /&gt;
    // type, which can be assigned the value null.&lt;br /&gt;
    obj = null;&lt;br /&gt;
  }&lt;br /&gt;
  public void print(){&lt;br /&gt;
     Console.WriteLine(obj);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ClassConstraintDemo {&lt;br /&gt;
  public static void Main() {&lt;br /&gt;
    Test&amp;lt;MyClass&amp;gt; x = new Test&amp;lt;MyClass&amp;gt;();&lt;br /&gt;
    // The next line is in error because int is&lt;br /&gt;
    // a value type.&lt;br /&gt;
//    Test&amp;lt;int&amp;gt; y = new Test&amp;lt;int&amp;gt;();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Demonstrate a value type constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
struct MyStruct {&lt;br /&gt;
}&lt;br /&gt;
class MyClass {&lt;br /&gt;
}&lt;br /&gt;
class Test&amp;lt;T&amp;gt; where T : struct {&lt;br /&gt;
  T obj;&lt;br /&gt;
  public Test(T x) {&lt;br /&gt;
    obj = x;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Test {&lt;br /&gt;
  public static void Main() {&lt;br /&gt;
    Test&amp;lt;MyStruct&amp;gt; x = new Test&amp;lt;MyStruct&amp;gt;(new MyStruct());&lt;br /&gt;
    Test&amp;lt;int&amp;gt; y = new Test&amp;lt;int&amp;gt;(10);&lt;br /&gt;
    // But, the following declaration is illegal!&lt;br /&gt;
//    Test&amp;lt;MyClass&amp;gt; z = new Test&amp;lt;MyClass&amp;gt;(new MyClass());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Derivation Constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
public class Starter {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        // good&lt;br /&gt;
        MyClass&amp;lt;XClass, YClass&amp;gt; obj = new MyClass&amp;lt;XClass, YClass&amp;gt;();&lt;br /&gt;
        // good&lt;br /&gt;
        MyClass&amp;lt;XClass, WClass&amp;gt; obj2 = new MyClass&amp;lt;XClass, WClass&amp;gt;();&lt;br /&gt;
        // bad&lt;br /&gt;
        MyClass&amp;lt;WClass, YClass&amp;gt; obj3 = new MyClass&amp;lt;WClass, YClass&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MyClass&amp;lt;K, V&amp;gt;&lt;br /&gt;
    where K : XClass&lt;br /&gt;
    where V : YClass {&lt;br /&gt;
}&lt;br /&gt;
public class XClass {&lt;br /&gt;
}&lt;br /&gt;
public class YClass {&lt;br /&gt;
}&lt;br /&gt;
public class WClass : YClass {&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference Type Constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
    using System;&lt;br /&gt;
    using System.Collections;&lt;br /&gt;
    public class Test{&lt;br /&gt;
        public static void Main(){&lt;br /&gt;
            Z&amp;lt;X&amp;gt; obj2=new Z&amp;lt;X&amp;gt;();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class Z&amp;lt;T&amp;gt; where T: class {&lt;br /&gt;
        public void Iterate(T data) {&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public class X{&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference Type Constraint: A reference type constraint restricts a type parameter to a reference type.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
public class Starter {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        // MyClass&amp;lt;int&amp;gt; obj1=new MyClass&amp;lt;int&amp;gt;(); [illegal]&lt;br /&gt;
        MyClass&amp;lt;XClass&amp;gt; obj2 = new MyClass&amp;lt;XClass&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MyClass&amp;lt;T&amp;gt; where T : class {&lt;br /&gt;
    public void Iterate(T data) {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class XClass {&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==There are five types of constraints:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
/*&lt;br /&gt;
    *Derivation constraints state the ascendancy of a type parameter.&lt;br /&gt;
    *Interface constraints are interfaces that are implemented by the type parameter.&lt;br /&gt;
    *Value type constraints restrict a type parameter to a value type.&lt;br /&gt;
    *Reference type constraints restrict a type parameter to a reference type.&lt;br /&gt;
    *Constructor constraints stipulate that the type parameter has a default or parameterless constructor.&lt;br /&gt;
*/&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use an interface constraint==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
class NotFoundException : ApplicationException { }&lt;br /&gt;
public interface IPhoneNumber {&lt;br /&gt;
  string Number {&lt;br /&gt;
    get;&lt;br /&gt;
    set;&lt;br /&gt;
  }&lt;br /&gt;
  string Name {&lt;br /&gt;
    get;&lt;br /&gt;
    set;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Friend : IPhoneNumber {&lt;br /&gt;
  string name;&lt;br /&gt;
  string number;&lt;br /&gt;
  public Friend(string n, string num) {&lt;br /&gt;
    name = n;&lt;br /&gt;
    number = num;&lt;br /&gt;
  }&lt;br /&gt;
  public string Number {&lt;br /&gt;
    get { return number; }&lt;br /&gt;
    set { number = value; }&lt;br /&gt;
  }&lt;br /&gt;
  public string Name {&lt;br /&gt;
    get { return name; }&lt;br /&gt;
    set { name = value; }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Supplier : IPhoneNumber {&lt;br /&gt;
  string name;&lt;br /&gt;
  string number;&lt;br /&gt;
  public Supplier(string n, string num) {&lt;br /&gt;
    name = n;&lt;br /&gt;
    number = num;&lt;br /&gt;
  }&lt;br /&gt;
  public string Number {&lt;br /&gt;
    get { return number; }&lt;br /&gt;
    set { number = value; }&lt;br /&gt;
  }&lt;br /&gt;
  public string Name {&lt;br /&gt;
    get { return name; }&lt;br /&gt;
    set { name = value; }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class EmailFriend {&lt;br /&gt;
}&lt;br /&gt;
class PhoneList&amp;lt;T&amp;gt; where T : IPhoneNumber {&lt;br /&gt;
  T[] phList;&lt;br /&gt;
  int end;&lt;br /&gt;
  public PhoneList() {&lt;br /&gt;
    phList = new T[10];&lt;br /&gt;
    end = 0;&lt;br /&gt;
  }&lt;br /&gt;
  public bool add(T newEntry) {&lt;br /&gt;
    if(end == 10) return false;&lt;br /&gt;
    phList[end] = newEntry;&lt;br /&gt;
    end++;&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  public T findByName(string name) {&lt;br /&gt;
    for(int i=0; i&amp;lt;end; i++) {&lt;br /&gt;
      if(phList[i].Name == name)&lt;br /&gt;
        return phList[i];&lt;br /&gt;
    }&lt;br /&gt;
    throw new NotFoundException();&lt;br /&gt;
  }&lt;br /&gt;
  public T findByNumber(string number) {&lt;br /&gt;
    for(int i=0; i&amp;lt;end; i++) {&lt;br /&gt;
      if(phList[i].Number == number)&lt;br /&gt;
        return phList[i];&lt;br /&gt;
    }&lt;br /&gt;
    throw new NotFoundException();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Test {&lt;br /&gt;
  public static void Main() {&lt;br /&gt;
    PhoneList&amp;lt;Friend&amp;gt; plist = new PhoneList&amp;lt;Friend&amp;gt;();&lt;br /&gt;
    plist.add(new Friend(&amp;quot;A&amp;quot;, &amp;quot;555-1111&amp;quot;));&lt;br /&gt;
    plist.add(new Friend(&amp;quot;B&amp;quot;, &amp;quot;555-6666&amp;quot;));&lt;br /&gt;
    plist.add(new Friend(&amp;quot;C&amp;quot;, &amp;quot;555-9999&amp;quot;));&lt;br /&gt;
    try {&lt;br /&gt;
      Friend frnd = plist.findByName(&amp;quot;B&amp;quot;);&lt;br /&gt;
      Console.Write(frnd.Name + &amp;quot;: &amp;quot; + frnd.Number);&lt;br /&gt;
    } catch(NotFoundException) {&lt;br /&gt;
      Console.WriteLine(&amp;quot;Not Found&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    Console.WriteLine();&lt;br /&gt;
    PhoneList&amp;lt;Supplier&amp;gt; plist2 = new PhoneList&amp;lt;Supplier&amp;gt;();&lt;br /&gt;
    plist2.add(new Supplier(&amp;quot;D&amp;quot;, &amp;quot;555-4444&amp;quot;));&lt;br /&gt;
    plist2.add(new Supplier(&amp;quot;E&amp;quot;, &amp;quot;555-3333&amp;quot;));&lt;br /&gt;
    plist2.add(new Supplier(&amp;quot;F&amp;quot;, &amp;quot;555-2222&amp;quot;));&lt;br /&gt;
    try {&lt;br /&gt;
      Supplier sp = plist2.findByNumber(&amp;quot;555-2222&amp;quot;);&lt;br /&gt;
      Console.WriteLine(sp.Name + &amp;quot;: &amp;quot; + sp.Number);&lt;br /&gt;
    } catch(NotFoundException) {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Not Found&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    //PhoneList&amp;lt;EmailFriend&amp;gt; plist3 = new PhoneList&amp;lt;EmailFriend&amp;gt;(); &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>