<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C# kódok &#187; elmélet</title>
	<atom:link href="http://users.atw.hu/csharpkodok/" rel="self" type="application/rss+xml" />
	<link>http://users.atw.hu/csharpkodok</link>
	<description>Csharp kódok gyüjteménye</description>
	<lastBuildDate>Fri, 07 Aug 2009 11:44:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>TragetSite</title>
		<link>http://users.atw.hu/csharpkodok/?p=94</link>
		<comments>http://users.atw.hu/csharpkodok/?p=94#comments</comments>
		<pubDate>Sat, 25 Jul 2009 07:41:02 +0000</pubDate>
		<dc:creator>nameless</dc:creator>
				<category><![CDATA[elmélet]]></category>
		<category><![CDATA[kód]]></category>
		<category><![CDATA[TragetSite]]></category>

		<guid isPermaLink="false">http://users.atw.hu/csharpkodok/?p=94</guid>
		<description><![CDATA[TragetSite tulajdonságok:


using System;
&#160;
namespace Program
{
    class Radio
    {
        public void TurnOn(bool on)
        {
            if (on)
           [...]]]></description>
			<content:encoded><![CDATA[<p>TragetSite tulajdonságok:<br />
<span id="more-94"></span></p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">using System;
&nbsp;
namespace Program
{
    class Radio
    {
        public void TurnOn(bool on)
        {
            if (on)
                Console.WriteLine(&quot;Jamming...&quot;);
            else
                Console.WriteLine(&quot;Quite time...&quot;);
        }
    }
&nbsp;
    class Car
    {
        //max sebesség konstansa
        public const int MaxSpeed = 100;
&nbsp;
        //Belső állapot adatok
        private int currSpeed;
        private string petName;
&nbsp;
        //az autó még mindig működőképes?
        private bool CarIsDead;
&nbsp;
        //Az autónak van egy rádiója
        private Radio theMusicBox = new Radio();
&nbsp;
        //Konstruktorok
        public Car() { }
        public Car(string name, int currSp)
        {
            currSpeed = currSp;
            petName = name;
        }
&nbsp;
        //Rádió be?
        public void CrankTunes(bool state)
        {
            theMusicBox.TurnOn(state);
        }
&nbsp;
        //Kivételt jelez, hogyha a felhasználó a MaxSpeed értéke fölé gyorsítja za autót.
        public void Accelerate(int delta)
        {
            if (CarIsDead)
                Console.WriteLine(&quot;{0} is out of order...&quot;, petName);
            else
            {
                currSpeed += delta;
                if (currSpeed &amp;gt; MaxSpeed)
                {
                    CarIsDead = true;
                    currSpeed = 0;
&nbsp;
                    //Kivétel kiváltása a throw segítségével
                    throw new Exception(string.Format(&quot;{0} has overheated!&quot;,petName));
                }
                else
                    Console.WriteLine(&quot;=&amp;gt; CurrSpeed = {0}&quot;, currSpeed);
            }
        }
&nbsp;
    }
&nbsp;
    class MainClass
    {
        public static void Main()
        {
            Console.WriteLine(&quot;*****Simple Exception Example*****&quot;);
            Console.WriteLine(&quot;=&amp;gt; Creating a car and steppong on it!&quot;);
            var myCar = new Car(&quot;David&quot;, 20); //zippy a neve és jelenleg 20-szal megyünk
            myCar.CrankTunes(true); //rádió bekapcsolva
&nbsp;
            try
            {
                for (int i = 0; i &amp;lt; 10; i++)
                    myCar.Accelerate(10); //10-zel nő a sebesség addig, amíg elnem éri a 100-at, utána felrobban
            }
            catch (Exception ex)
            {
                Console.WriteLine(&quot;*** Error! ***&quot;);
&nbsp;
               //***************************************
                 Console.WriteLine(&quot;Method: {0}&quot;, ex.TargetSite);
                Console.WriteLine(&quot;Class defining member: {0}&quot;,ex.TargetSite.DeclaringType);
                Console.WriteLine(&quot;Member type: {0}&quot;, ex.TargetSite.MemberType);
               //****************************************        
&nbsp;
                Console.WriteLine(&quot;Message: {0}&quot;, ex.Message);
                Console.WriteLine(&quot;Source: {0}&quot;, ex.Source);
            }
&nbsp;
            //A hibát kezeltük, a program FOLYTATÓDIK
            Console.WriteLine(&quot;\n***** Out of Exception logic *****&quot;);
            Console.ReadKey();
        }
    }
&nbsp;
}</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://users.atw.hu/csharpkodok/?feed=rss2&amp;p=94</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Felüldefiniálások</title>
		<link>http://users.atw.hu/csharpkodok/?p=89</link>
		<comments>http://users.atw.hu/csharpkodok/?p=89#comments</comments>
		<pubDate>Thu, 23 Jul 2009 20:40:16 +0000</pubDate>
		<dc:creator>nameless</dc:creator>
				<category><![CDATA[elmélet]]></category>
		<category><![CDATA[kód]]></category>

		<guid isPermaLink="false">http://users.atw.hu/csharpkodok/?p=89</guid>
		<description><![CDATA[ToString() Equals() GetHashCode() felüldefiniálása:


using System;
&#160;
namespace Program
{
    class Person
    {
        public string fName;
        public string lName;
        public sbyte personAge;
&#160;
        public Person(string firstName, [...]]]></description>
			<content:encoded><![CDATA[<p>ToString() Equals() GetHashCode() felüldefiniálása:<br />
<span id="more-89"></span></p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">using System;
&nbsp;
namespace Program
{
    class Person
    {
        public string fName;
        public string lName;
        public sbyte personAge;
&nbsp;
        public Person(string firstName, string lastName, byte age)
        {
            fName = firstName;
            lName = lastName;
            personAge = (sbyte)age;
        }
        public Person() { }
&nbsp;
        //fölülírjuk a ToStringet
        public override string ToString()
        {
            string myState;
            myState = String.Format(&quot;[First Name: {0}; Last Name: {1}; Age: {2}]&quot;, fName, lName, personAge);
            return myState;
        }
&nbsp;
        //felüldefiniáljuk az Equalst
        public override bool Equals(object obj)
        {
            if (obj is Person &amp;&amp; obj != null)
            {
                Person temp;
                temp = (Person)obj;
                if (temp.fName == this.fName &amp;&amp; temp.lName == this.lName &amp;&amp; temp.personAge == this.personAge)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            return false;
        }
        //visszaadja a ToString() érték alapján kiszámított hashértéket.
        public override int GetHashCode()
        {
            return this.ToString().GetHashCode();
        }
    }
&nbsp;
    class EntryPoint
    {
        public static void Main()
        {
            //Az Equals() és a GetHashCode() teszteléséhez
            //ezeknek egyezniük kell.
            var p1 = new Person(&quot;Homer&quot;, &quot;Simpson&quot;, 50);
            var p2 = new Person(&quot;Homer&quot;, &quot;Simpson&quot;, 50);
&nbsp;
            //Az objektum szöveges verziójának beolvasása
            Console.WriteLine(&quot;p1.ToString() {0}&quot;,p1.ToString());
            Console.WriteLine(&quot;p2.ToString() {0}&quot;, p2.ToString());
&nbsp;
            //a felülbírált Equals() tesztelése
            Console.WriteLine(&quot;p1 = p2?: {0}&quot;, p1.Equals(p2));
&nbsp;
            //a hashérték tesztelése.
            Console.WriteLine(&quot;Same hash codes?: {0}&quot;, p1.GetHashCode() == p2.GetHashCode());
            Console.WriteLine();
&nbsp;
            //A p2 korának módosítása, és ismételt tesztelése.
            p2.personAge = 45;
            Console.WriteLine(&quot;p1.ToString() {0}&quot;, p1.ToString());
            Console.WriteLine(&quot;p2.ToString() {0}&quot;, p2.ToString());
            Console.WriteLine(&quot;p1 = p2?: {0}&quot;, p1.Equals(p2));
            Console.WriteLine(&quot;Same hash codes?: {0}&quot;, p1.GetHashCode() == p2.GetHashCode());
            Console.WriteLine();
&nbsp;
&nbsp;
            Console.ReadKey();
        }
    }
}</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://users.atw.hu/csharpkodok/?feed=rss2&amp;p=89</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Részleges típusok</title>
		<link>http://users.atw.hu/csharpkodok/?p=48</link>
		<comments>http://users.atw.hu/csharpkodok/?p=48#comments</comments>
		<pubDate>Thu, 16 Jul 2009 20:01:09 +0000</pubDate>
		<dc:creator>nameless</dc:creator>
				<category><![CDATA[elmélet]]></category>
		<category><![CDATA[kód]]></category>
		<category><![CDATA[parciális osztályok]]></category>
		<category><![CDATA[partial]]></category>
		<category><![CDATA[részleges típusok]]></category>

		<guid isPermaLink="false">http://users.atw.hu/csharpkodok/?p=48</guid>
		<description><![CDATA[Részleges típusok (partial, parciális osztályok):

A partial lehetővé teszi, hogy több .cs fájlban is meghatározzuk a típust.

partial class Employee
{
   //Konstruktorok.
   ...
   //Tulajdonságok.
&#160;
}

A privát adatmezők és típusmetódusok a kezdeti employee.cs lesznek meghatározva:

using System;
&#160;
partial class Employee
{
    //Mezőadatok
    private string empName;
    private int empID;
 [...]]]></description>
			<content:encoded><![CDATA[<p>Részleges típusok (partial, parciális osztályok):<br />
<span id="more-48"></span></p>
<p>A partial lehetővé teszi, hogy több .cs fájlban is meghatározzuk a típust.</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">partial class Employee
{
   //Konstruktorok.
   ...
   //Tulajdonságok.
&nbsp;
}</pre></div></div>

<p>A privát adatmezők és típusmetódusok a kezdeti employee.cs lesznek meghatározva:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">using System;
&nbsp;
partial class Employee
{
    //Mezőadatok
    private string empName;
    private int empID;
    private float currPay;
    private int empAge;
    private string empSSN;
    private static string companyName;
&nbsp;
    public void GiveBonus(float amount)
    {
        currPay += amount;
    }
&nbsp;
    public void DisplyaStats()
    {
        Console.WriteLine(&quot;Name: {0}&quot;,empName);
        Console.WriteLine(&quot;ID: {0}&quot;,empID);
        Console.WriteLine(&quot;Age: {0}&quot;,empAge);
        Console.WriteLine(&quot;SSN: {0}&quot;, empSSN);
        Console.WriteLine(&quot;Pay: {0}&quot;, currPay);
    }
}</pre></div></div>

<p>Az egyetlen követelmény a részleges típusok meghatározásakor az, hogy a típus neve ugyan az legyen, és ugyanazon a .NET névteren </p>
<p>belül határozódjon meg.</p>
]]></content:encoded>
			<wfw:commentRss>http://users.atw.hu/csharpkodok/?feed=rss2&amp;p=48</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objektum Orientált Programozás (kód elmélet)</title>
		<link>http://users.atw.hu/csharpkodok/?p=37</link>
		<comments>http://users.atw.hu/csharpkodok/?p=37#comments</comments>
		<pubDate>Thu, 16 Jul 2009 07:31:47 +0000</pubDate>
		<dc:creator>nameless</dc:creator>
				<category><![CDATA[elmélet]]></category>
		<category><![CDATA[kód]]></category>
		<category><![CDATA[Objektum orientál programozás]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[set get]]></category>
		<category><![CDATA[tulajdonságok]]></category>

		<guid isPermaLink="false">http://users.atw.hu/csharpkodok/?p=37</guid>
		<description><![CDATA[Objektum Orientált Programozás (kód elmélet):


using System;
&#160;
namespace Program
{
    sealed class Radio
    {
        public void Power(bool turnOn)
        {
            Console.WriteLine(&#34;Radio on: {0}&#34;, turnOn);
     [...]]]></description>
			<content:encoded><![CDATA[<p>Objektum Orientált Programozás (kód elmélet):<br />
<span id="more-37"></span></p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">using System;
&nbsp;
namespace Program
{
    sealed class Radio
    {
        public void Power(bool turnOn)
        {
            Console.WriteLine(&quot;Radio on: {0}&quot;, turnOn);
        }
    }
&nbsp;
    class Car
    {
        // az autónak van egy rádiója
        private Radio myRadio = new Radio();
&nbsp;
        public void TurnOnRadio(bool onOff)
        {
            //Hívás továbbítása a belső objektumnak
            myRadio.Power(onOff);
        }
    }
&nbsp;
    class MainClass
    {
        public static void Main()
        {
            //A hívás belső továbbítása a Radio osztáklynak
            Car viper = new Car();
            viper.TurnOnRadio(true);
&nbsp;
            Console.ReadKey();
        }
    }
}</pre></div></div>

<p>A Rádiót külön osztályba soroljuk, mert semmi köze sincs az autóhoz, csak annyi, hogy benne van&#8230;</p>
<p>Most írunk egy olyan programot, ami lemodellezi egy dolgos dolgozó munkáját:<br />
Először hozzunk létre egy új alkalmazást EmployeeApp néven, és szúrjunk be egy új osztályt a Project -> Add class menüelemmel.<br />
Módosítsuk az Employee osztályt a következő mezőkkel, metódusokkal és konstruktorokkal:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
&nbsp;
namespace EmployeeApp
{
    class Employee
    {
        //mezőadatok
        private string empName;
        private int empID;
        private float currPay;
&nbsp;
&nbsp;
        //lekérdező get metódus
        public string GetName()
        {
            return empName;
        }
&nbsp;
        //Módosító set metódus
        public void SetName(string name)
        {
            empName = name;
        }
&nbsp;
        //Konstruktorok
        public Employee() { }
        public Employee(string name, int id, float pay)
        {
            empName = name;
            empID = id;
            currPay = pay;
        }
&nbsp;
        public void GiveBonus(float amount)
        {
            currPay += amount;
        }
        public void DisplayStats()
        {
            Console.WriteLine(&quot;Name: {0}&quot;,empName);
            Console.WriteLine(&quot;ID: {0}&quot;, empID);
            Console.WriteLine(&quot;Pay: {0}&quot;, currPay);
        }
&nbsp;
    }
}</pre></div></div>

<p>Main() rész:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
&nbsp;
namespace EmployeeApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Employee emp = new Employee(&quot;Marvin&quot;, 436, 3000);
            emp.GiveBonus(1000);
            emp.DisplayStats();
&nbsp;
            //munka az objektum nevével a get/set módosítók segítségével
            emp.SetName(&quot;Marv&quot;);
            Console.WriteLine(&quot;Employee is named: {0}&quot;, emp.GetName());
&nbsp;
            Console.ReadKey();
        }
    }
}</pre></div></div>

<p><a href="http://www.csharpkodok.atw.hu/feltoltesek/EmployeeApp.zip">A projekt letöltése</a></p>
<p>Egységbe zárás propertykkel:  (property, tulajdonságok, set, get)</p>
<p>Main rész:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
&nbsp;
namespace EmployeeApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Employee emp = new Employee(&quot;Marvin&quot;, 436, 3000);
            emp.GiveBonus(1000);
            emp.DisplayStats();
&nbsp;
            //a Name tulajdonságok beolvasása és beállítása
            emp.Name = &quot;Marv&quot;;
            Console.WriteLine(&quot;Employee is named: {0}&quot;, emp.Name);
&nbsp;
            Console.ReadKey();
        }
    }
}</pre></div></div>

<p>A hozzáadott osztály:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
&nbsp;
namespace EmployeeApp
{
    class Employee
    {
        //mezőadatok
        private string empName;
        private int empID;
        private float currPay;
&nbsp;
&nbsp;
        //tulajdonságok
        public string Name
        {
            get { return empName; }
            set { empName = value; }
        }
&nbsp;
        public float pay
        {
            get { return currPay; }
            set { currPay = value; }
        }
&nbsp;
        //Konstruktorok
        public Employee() { }
        public Employee(string name, int id, float pay)
        {
            empName = name;
            empID = id;
            currPay = pay;
        }
&nbsp;
        public void GiveBonus(float amount)
        {
            currPay += amount;
        }
        public void DisplayStats()
        {
            Console.WriteLine(&quot;Name: {0}&quot;,empName);
            Console.WriteLine(&quot;ID: {0}&quot;, empID);
            Console.WriteLine(&quot;Pay: {0}&quot;, currPay);
        }
&nbsp;
    }
}</pre></div></div>

<p>Statikus tulajdonságok, statikus probertyk:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">using System;
&nbsp;
namespace Program
{
    class MainClass
    {
        public static void Main()
        {
            WebSite.WebName = &quot;www.csharpkodok.atw.hu&quot;;
            Console.WriteLine(WebSite.WebName);
&nbsp;
            Console.ReadKey();
        }
    }
&nbsp;
    class WebSite
    {
        //statikus tulajdonsághoz a mezőnek is statikusnak kell lennie...
        private static string WebsiteName;
        public static string WebName
        {
            get { return WebsiteName; }
            set { WebsiteName = value; }
        }
    }
}</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://users.atw.hu/csharpkodok/?feed=rss2&amp;p=37</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interfész (elmélet)</title>
		<link>http://users.atw.hu/csharpkodok/?p=34</link>
		<comments>http://users.atw.hu/csharpkodok/?p=34#comments</comments>
		<pubDate>Wed, 15 Jul 2009 20:42:03 +0000</pubDate>
		<dc:creator>nameless</dc:creator>
				<category><![CDATA[elmélet]]></category>
		<category><![CDATA[kód]]></category>
		<category><![CDATA[interface]]></category>

		<guid isPermaLink="false">http://users.atw.hu/csharpkodok/?p=34</guid>
		<description><![CDATA[Interfész, interface (elmélet):

Vannak az emberek és az állatok, na meg a szamarak. Fingani mindegyik tud, magyarul egy ilyen felületet mindegyik megvalósít:

public interface IFarter
{
  bool DoFart();
&#160;
  event EventHandler&#60;ShitFlowingOnMyLegEventArgs&#62; ShitFlowingInMyLeg;
}
&#160;
public class ShitFlowingOnMyLegEventArgs : EventArgs
{
  public ShitFlowingOnMyLegEventArgs(bool leftLeg, double ammountInKilogramms)
  {
    this.LeftLeg = leftLEg;
    this.AmmountInKilogramms = ammountInKilogramms;
  [...]]]></description>
			<content:encoded><![CDATA[<p>Interfész, interface (elmélet):<br />
<span id="more-34"></span><br />
Vannak az emberek és az állatok, na meg a szamarak. Fingani mindegyik tud, magyarul egy ilyen felületet mindegyik megvalósít:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">public interface IFarter
{
  bool DoFart();
&nbsp;
  event EventHandler&lt;ShitFlowingOnMyLegEventArgs&gt; ShitFlowingInMyLeg;
}
&nbsp;
public class ShitFlowingOnMyLegEventArgs : EventArgs
{
  public ShitFlowingOnMyLegEventArgs(bool leftLeg, double ammountInKilogramms)
  {
    this.LeftLeg = leftLEg;
    this.AmmountInKilogramms = ammountInKilogramms;
  }
&nbsp;
  public bool LeftLeg { get; private set; }
&nbsp;
  public double AmmountInKilogramms { get; private set; }
}</pre></div></div>

<p>A DoFart metódussal meg lehet kérni a delikvenst, hogy ugyan, fingjon már egyet. Ha tud, akkor megereszt egy komolyabb lepkét, és visszatér &#8216;true&#8217;-val, ha nem, akkor csak elvörösödik a feje, bef0s1k, erről egy eseménykezelőn keresztül tájékoztatja a külvilágot, és a visszatérési érték &#8216;false&#8217;.</p>
<p>A felület csak azt írja le, hogy ez a viselkedés hogy fog látszani, és hogyan kezelhető a külvilág számára. Absztrakt fogalom, nem tudjuk, hogy a fingásra képes élőlények hogyan finganak, de azt tudjuk, hogyan kell kezelni a helyzetet. Comprende?</p>
<p>Nézzük tovább:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">public abstract Animal : IFarter
{
  abstract bool DoFart();
&nbsp;
  event EventHandler&lt;ShitFlowingOnMyLegEventArgs&gt; ShitFlowingOnMyLeg;
}</pre></div></div>

<p>Az állat absztrakt osztályfogalom, mert ebből fog származni minden konkrét állatfaj, de itt már jelezhetjük a felület megvalósíátást (és megvalósíthatjuk absztrakt módon), mert akinek bele van, az fingani is fog. Ebből az osztályból lehet származtatni a szamarat, és a legnagyobb állatot az embert. Mindegyik ismerni fogja az IFarter felületet. De akkor mire jó a felület, miért nem elég csak az absztrakt ős?<br />
Mit tud egy fingópárna? Na? Bingó: fingani, mint a gép! (Maximum nem fo&#8230;kakilja le a lába szárát, de az eseményt nem kötelező meghívni):</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">public sealed class FartPillow : IFarter
{
  public bool DoFart()
  {
    // Itt implementalja a belso f1ng0mechanizmust
  }
&nbsp;
  event EventHandler&lt;ShitFlowingOnMyLegEventArgs&gt; ShitFlowingInMyLeg;
  // ezzel meg nem foglalkozik, bar az uj modellek csodakra lehetnek kepesek
}</pre></div></div>

<p>Anélkül, hogy az állatoknak és egy teljesen más alapokon nyugvó fingó párnak közös őstől kellett volna származtatni, tudunk belőlük kezelni egy egységes, nagy és összetartó fingó közösséget, akinek minden tagja eregeti a buborékot, de nagyon durván. Ezeket be tudjuk állítani egy sorba:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">List&lt;IFarter&gt; faterList = new List&lt;IFater&gt;();</pre></div></div>

<p>Bele tudjuk dobni egy gödörbe:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">Stack&lt;IFater&gt; farterStack = new Stack&lt;IFater&gt;();</pre></div></div>

<p>Mind a gödör, mind a sor megvalósítja az IEnumaerable<T> felületet, amin keresztül tudjuk iterálni a benne lévő elemeket, és a benne lévő elemek megvalósítják az IFarter feleületet, szóval tudnak fingani, ezért:</p>

<div class="wp_syntax"><div class="code"><pre class="language" style="font-family:monospace;">foreach (IFarter farter in faterList) // IEnumerable&lt;T&gt;-t hasznal a foreach!
{
  farter.DoFart();
}
&nbsp;
foreach (IFarter farter in faterStack)
{
  farter.DoFart();
}</pre></div></div>

<p>Hála a interfészeknek van egységes felület, amin a hasonló viselkedéssel, de teljesen más megvalósítással rendelkező objektumokat képesek vagyunk azonos módon (mindenféle cast-elések nélkül) kezelni.</p>
<p>Durván ennyi. <img src='http://users.atw.hu/csharpkodok/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>írta: Chikk</p>
]]></content:encoded>
			<wfw:commentRss>http://users.atw.hu/csharpkodok/?feed=rss2&amp;p=34</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
