▁be ▁classes , ▁to ▁have ▁construct ors , ▁and ▁to ▁implement ▁interfaces . ▁Below ▁is ▁an ▁example ▁with ▁an ▁interface ▁constraint : ▁ ▁using ▁System ; ▁ ▁class ▁Sample ▁{ ▁▁▁▁ ▁static ▁void ▁Main () ▁▁▁▁ ▁{ ▁▁▁▁▁▁▁▁ ▁int [] ▁array ▁= ▁{ ▁ 0 , ▁ 1 , ▁ 2 , ▁ 3 ▁}; ▁▁▁▁▁▁▁▁ ▁Make At Le ast < int >( array , ▁ 2 ); ▁// ▁Change ▁array ▁to ▁{ ▁ 2 , ▁ 2 , ▁ 2 , ▁ 3 ▁} ▁▁▁▁▁▁▁▁ ▁foreach ▁( int ▁i ▁in ▁array ) ▁▁▁▁▁▁▁▁▁▁▁▁ ▁Console . WriteLine ( i ); ▁// ▁Print ▁results . ▁▁▁▁▁▁▁▁ ▁Console . Read Key ( true ); ▁▁▁▁ ▁} ▁▁▁▁▁ ▁static ▁void ▁Make At Le ast < T >( T [] ▁list , ▁T ▁lowest ) ▁where ▁T ▁: ▁I Com par able < T > ▁▁▁▁ ▁{ ▁▁▁▁▁▁▁▁ ▁for ▁( int ▁i ▁= ▁ 0 ; ▁i ▁< ▁list . Length ; ▁i ++) ▁▁▁▁▁▁▁▁▁▁▁▁ ▁if ▁( list [ i ]. Comp are To ( low est ) ▁< ▁ 0 ) ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ ▁list [ i ] ▁= ▁lowest ; ▁▁▁▁ ▁} ▁} ▁ ▁The ▁Make At Le ast () ▁method ▁allows ▁operation ▁on ▁arrays , ▁with ▁elements ▁of ▁generic ▁type ▁T . ▁The ▁method ' s ▁type ▁constraint ▁indicates ▁that ▁the ▁method ▁is ▁applicable ▁to ▁any ▁type ▁T ▁that ▁implements ▁the ▁generic ▁I Com par able < T > ▁interface . ▁This ▁ens ures ▁a ▁compile ▁time ▁error , ▁if ▁the ▁method ▁is ▁called ▁if ▁the