http://csharpprogramer.ParsiBlog.comبرنامه نويسي سي شارپParsiBlog.com ATOM GeneratorFri, 29 Mar 2024 13:33:53 GMTسيد كاظم اسدي515tag:csharpprogramer.ParsiBlog.com/Posts/11/%d9%82%d8%b1%d8%b9%d9%87+%d9%83%d8%b4%d9%8a+%d9%85%d8%b1%d8%ad%d9%84%d9%87+%d9%86%d9%87%d8%a7%d9%8a%d9%8a+%d9%85%d9%82%d8%af%d9%85%d8%a7%d8%aa%d9%8a+%d8%ac%d8%a7%d9%85+%d8%ac%d9%87%d8%a7%d9%86%d9%8a+2014+%d8%a8%d8%b1%d8%b2%d9%8a%d9%84/Fri, 09 Mar 2012 17:49:00 GMTقرعه كشي مرحله نهايي مقدماتي جام جهاني 2014 برزيل<div dir='rtl'><p style="text-align: center;"><img title="مرحله نهايي قرعه كشي" src="http://www.ParsiBlog.com/PhotoAlbum/csharpprogramer/1.jpg" alt="قرعه كشي مرحله نهايي مقدماتي جام جهاني 2014 برزيل" width="300" height="200" / onload="ResetWH(this,470);"></p></div>سيد كاظم اسديtag:csharpprogramer.ParsiBlog.com/Posts/10/%d8%a7%d8%b5%d9%84%d8%a7%d8%ad%da%af%d8%b1+%d9%87%d8%a7%d9%8a+%d8%af%d8%b3%d8%aa%d9%8a%d8%a7%d8%a8%d9%8a++%d8%af%d8%b1+c%23+(Access+Modifiers)/Tue, 06 Mar 2012 10:35:00 GMTاصلاحگر هاي دستيابي در c# (Access Modifiers)<div dir='rtl'><p> روش هاي دسترسي به متدها و خاصيتهاي تعريف شده در داخل يك كلاس به چهار دسته تقسيم مي شود:</p>
<br><p style="text-align: center">public-private-internal-protected</p>
<br><p><span style="color: #3366ff;">1</span>.<span style="color: #3366ff;">public</span></p>
<br><p>متد ها و خاصيت هايي كه در يك كلاس به صورت public تعريف شوند ، هر كلاسي كه از اين كلاس يك نمونه مي سازد يا از اين كلاس ارث بري دارد ،‌ مي تواند به اين عناصر دسترسي داشته باشد.</p>
<br><p><span style="color: #3366ff;">2</span>.<span style="color: #3366ff;">private</span></p>
<br><p>متدها و خاصيت هايي كه در يك كلاس به صورت private تعريف شوند ، تنها در داخل همان كلاس قابل دسترسي هستند.</p>
<br><p>مثال:</p>
<br><p dir="ltr" align="right">class Employee</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr"> public string name = "xx";</p>
<br><p dir="ltr"> double salary = 100.00; // private access by default</p>
<br><p dir="ltr"> public double AccessSalary()</p>
<br><p dir="ltr"> {return salary;</p>
<br><p dir="ltr"> }</p>
<br><p dir="ltr">}</p>
<br><p dir="ltr">class MainClass</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr"> public static void Main()</p>
<br><p dir="ltr"> {</p>
<br><p dir="ltr"> Employee e = new Employee();</p>
<br><p dir="ltr"> // Accessing the public field:</p>
<br><p dir="ltr"> string n = e.name;</p>
<br><p dir="ltr"> // Accessing the public field:</p>
<br><p dir="ltr"> double s = e.AccessSalary();</p>
<br><p dir="ltr">// Accessing the private field is false:</p>
<br><p dir="ltr"> double s = e.salary; // <span style="color: #ff0000;">error</span></p>
<br><p dir="ltr"> }</p>
<br><p dir="ltr">}</p>
<br><p><span style="color: #3366ff;">3</span>.<span style="color: #3366ff;">protected</span></p>
<br><p>متدها و خاصيت هايي كه در يك كلاس به صورت protected تعريف شوند، در داخل همان كلاس و كلاسهايي كه از اين كلاس مشتق شده اند (ارث برده اند) قابل دسترس هستند و نمونه هاي ايجاد شده از كلاس به اين متدها و خاصيت ها دسترسي ندارند.</p>
<br><p><span style="color: #3366ff;">4</span>.<span style="color: #3366ff;">internal</span></p>
<br><p>كلاسها يي كه به صورت internal تعريف شوند، تنها كلاسهايي مي توانند از آنها استفاده كنند كه در يك اسمبلي يكسان تعريف شده باشند.</p>
<br><p>مثال:</p>
<br><p dir="ltr">// Assembly1.cs</p>
<br><p dir="ltr">internal class BaseClass</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr"> public static int IntM = 0;</p>
<br><p dir="ltr">}</p>
<br><p dir="ltr">// Assembly2.cs</p>
<br><p dir="ltr">class TestAccess</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr"> public static void Main()</p>
<br><p dir="ltr"> {</p>
<br><p dir="ltr"> BaseClass myBase = new BaseClass(); // error</p>
<br><p dir="ltr"> }</p>
<br><p dir="ltr">}</p>
<br><p>در مثال فوق كلاس baseClass در اسمبلي 1 به صورت internal تعريف شده است ، كلاس testAccess تعريف شده در اسمبلي 2 يك نمونه از كلاس baseClass را ايجاد مي كند كه اين يك خطا محسوب مي شود.</p>
<br><p> </p></div>سيد كاظم اسديtag:csharpprogramer.ParsiBlog.com/Posts/9/%d9%83%d9%84%d8%a7%d8%b3%d9%87%d8%a7%d9%8a+abstract+(%d8%a7%d9%86%d8%aa%d8%b2%d8%a7%d8%b9%d9%8a)+%d8%af%d8%b1+c%23/Mon, 27 Feb 2012 19:30:00 GMTكلاسهاي abstract (انتزاعي) در c#<div dir='rtl'><p>در ارث بري كلاس هاي پايه ، تنها شامل متدها و خصوصياتي هستند كه در بين كلاسهايي كه از اين كلاسها مشتق مي شوند مشترك هستند. به عبارت ديگر خود كلاس هاي پايه داراي مفهوم كاملي از يك شيئ نمي باشند ، درنتيجه ايجاد اشياء جديد از اين كلاسها بي معني است. براي اينكه نتوان از كلاسهاي پايه ، اشياء نمونه اي تعريف كرد . آنها را به صورت abstract تعريف مي نماييم.</p>
<br><p>نكته اينكه نمي توان اشياء جديد از كلاس هاي abstract ‌ ايجاد كرد.</p>
<br><p>مثال :</p>
<br><p dir="ltr">Abstract class baseClass</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr">Public int line();</p>
<br><p dir="ltr"> Public int run(int Step)</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr"> Return step*10;</p>
<br><p dir="ltr">}</p>
<br><p dir="ltr">}</p>
<br><p dir="ltr">Class run1 : baseClass</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr"> Public string name(string name)</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr">Return name;</p>
<br><p dir="ltr">}</p>
<br><p dir="ltr">Public override int line()</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr">// پياده سازي متد</p>
<br><p dir="ltr">}</p>
<br><p dir="ltr">}</p>
<br><p>متدهاي كلاس abstract به صورت ضمني virtual هستند ، بنابر اين براي پياده سازي اين متدها در كلاس مشتق شده ،بايد آنها را در كلاس پايه override كنيم.</p>
<br><p> </p></div>سيد كاظم اسديtag:csharpprogramer.ParsiBlog.com/Posts/8/interface+(%d9%88%d8%a7%d8%b3%d8%b7)%d9%87%d8%a7+%d8%af%d8%b1+c%23/Sun, 26 Feb 2012 15:47:00 GMTinterface (واسط)ها در c#<div dir='rtl'><p>ارث بردن از يك كلاس، مكانيزم قدرتمندي است، ولي قدرت واقعي وراثت از ارث بردن از يك interface است.interface ها دليل اصلي وجود وراثت هستند. يك interface به شما امكان مي دهد تا اسم متد را كاملا از پياده سازي آن جدا كنيد.</p>
<br><p>interface به شما مي گويد كه اسم متد چيست و چگونگي پياده سازي متد به interface ربطي ندارد.interface نشان مي دهد كه مي خواهيد يك آبجكت چگونه مورد استفاده قرار گيرد و به اين كه چگونه پياده سازي مي شود كاري ندارد.</p>
<br><p>شكل كلي يك interface به صورت زير است:</p>
<br><p dir="ltr"><span style="color: #ff0000;">interface</span> product</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr"> returntype methodname();</p>
<br><p dir="ltr">}</p>
<br><p>براي تعريف يك interface به جاي كلمات كليدي class يا struct از كلمه كليدي interface استفاده مي شود.درون بلاك interface،متدها درست مثل متدهاي كلاس يا struct تعريف مي كنيد،اما نيازي به مشخصه هاي دسترسي (public,private) نيست و به جاي بدنه متد از سمي كالن «;»استفاده مي شود.</p>
<br><p>نكته :يك كلاس مي تواند هم از يك كلاس پايه و هم از يك interface ارث ببرد.c# از طريق ترتيب قرارگيري تشخيص مي دهد كه كداميك interface و كداميك class هستند. ابتدا اسم كلاس پايه و بعد از يك علامت كاما«,» و بعد اسم interface نوشته مي شود</p>
<br><p>مثال از پياده سازي يك interface</p>
<br><p dir="ltr">interface base</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr">string name();</p>
<br><p dir="ltr">}</p>
<br><p dir="ltr">calss class1 : base</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr">public string name()</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr"><span style="color: #33cccc;">// پياده سازي متد</span></p>
<br><p dir="ltr">}</p>
<br><p dir="ltr">}</p>
<br><p> </p></div>سيد كاظم اسديtag:csharpprogramer.ParsiBlog.com/Posts/7/%d9%85%d8%aa%d8%af+%d9%87%d8%a7%d9%8a+override/Fri, 24 Feb 2012 23:40:00 GMTمتد هاي override<div dir='rtl'><p>اگر كلاس پايه، يك متد را به صورت virtual تعريف كند، يك كلاس مشتق شده از آن مي تواند از كلمه كليدي override استفاده كند تا يك پياده سازي ديگر از آن متد را تعريف كند.</p>
<br><p>مثال:</p>
<br><p dir="ltr">Class IdentifierToken : Token</p>
<br><p dir="ltr">{</p>
<br><p dir="ltr"> Public <span style="color: #ff0000;">override</span> string Name()</p>
<br><p dir="ltr">{</p>
<br><p style="text-align: left;" dir="rtl">كدهاي اين نمونه از متد // </p>
<br><p dir="ltr">}</p>
<br><p dir="ltr">}</p>
<br><p> </p></div>سيد كاظم اسدي