<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/posts/rss.xsl"?>
<rss version="2.0">
<channel>

<title>https://mhdsoft.loxblog.com</title>
<link>https://mhdsoft.loxblog.com</link>
<description></description>
<language>fa-ir</language>
<generator>loxblog.com</generator>
<copyright>loxblog.com</copyright>


<item>
<title>آموزش نرم افزار های کاربردی</title>
<link>https://mhdsoft.loxblog.com/آموزش-نرم-افزار-های-کاربردی</link>
<guid>https://mhdsoft.loxblog.com/آموزش-نرم-افزار-های-کاربردی</guid>

<description><![CDATA[
با عرض سلام
من توی این پست قصد دارم تا برای شما عزیزان از این به بعد یکسری آموزش نرم افزار های کاربردی را برای شما عزیزان قرار دهم.
انشاءالله که به دردتون بخوره !!!!!!!!!!!!!!!&nbsp;
1. آموزش نحوه امیج گرفتن از سی دی و دی وی دی
&nbsp;]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


<item>
<title>فیلم آموزشی</title>
<link>https://mhdsoft.loxblog.com/فیلم-آموزشی</link>
<guid>https://mhdsoft.loxblog.com/فیلم-آموزشی</guid>

<description><![CDATA[
سلام
ببخشید یه چند وقتی نبودم . منم مثل خیلی از شما عزیزان روزهای .... امتحانات رو می گذروندم
راستی بچه ها وقتی واسه خودتون دعا میکنین منم دعا کنین یادتون نره ها&nbsp;
خب دیگه بیشتر از این منتظرتون نمی گذارم و مطلب اصلی رو واستون می گم
من تصمیم گرفتم از این به بعد واستون فیلم آموزشی برنامه نویسی تو وبلاگم قرار بدم تا نه تنها برنامه نویسی رو یاد می گیرید بلکه با انجام یکسری پروژه های عملی ، تسلط بیشتری روی مطالب پیدا کنین
انشاءالله که بدردتون بخوره این اموزش ها
&nbsp; با کلیک برروی هر دوره آموزشی به قسمت دانلود فیلم های آموزشی می توانید وارد شوید.
&nbsp;
دوره آموزشی Asp.net (ساخت وبسایت خبری)]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


<item>
<title>درس دهم</title>
<link>https://mhdsoft.loxblog.com/درس-دهم</link>
<guid>https://mhdsoft.loxblog.com/درس-دهم</guid>

<description><![CDATA[
ﻣﺒﺤﺚ ‪: overloading‬‬

‫ﮔﺎھﻲ از اوﻗﺎت ﻻزم اﺳﺖ ﺗﺎ ﻧﮕﺎرش ھﺎی ﻣﺨﺘﻠﻔﻲ  از ﻳﻚ ﺗﺎﺑﻊ داﺷﺘﻪ ﺑﺎﺷﯿﻢ. ﺑﺮای ﻣﺜﺎل ﺗﻌﺮﻳﻒ ﺳﻪ ﺗـﺎﺑﻊ ﺑـﺎ ﻳـﻚ ﻧـﺎم ‫اﻣﺎ ﺑﺎ  آرﮔﻮﻣﺎﻧﮫﺎی ﻣﺨﺘﻠﻒ. ﺑﻪ اﻳﻦ ﻧﻮع ﺗﻮاﺑﻊ و ﻳﺎ ﻣﺘﺪھﺎ اﺻﻄﻼﺣﺎ ‪ Overloaded  Methods‬ ﻣﻲ ﮔﻮﻳﻨﺪ . ( ﻓﻜﺮ ﻛـﻨﻢ آﻧـﺮا‬ ‫ﺳﺮﺑﺎرﮔﺬاری ﺗﻮاﺑﻊ ﺗﺮﺟﻤﻪ ﻛﺮده اﻧﺪ! )  ﺑﺮای ﻣﺜﺎل :...
ﻣﺒﺤﺚ ‪: overloading‬‬

‫ﮔﺎھﻲ از اوﻗﺎت ﻻزم اﺳﺖ ﺗﺎ ﻧﮕﺎرش ھﺎی  ﻣﺨﺘﻠﻔﻲ از ﻳﻚ ﺗﺎﺑﻊ داﺷﺘﻪ ﺑﺎﺷﯿﻢ. ﺑﺮای ﻣﺜﺎل ﺗﻌﺮﻳﻒ ﺳﻪ ﺗـﺎﺑﻊ ﺑـﺎ ﻳـﻚ ﻧـﺎم  ‫اﻣﺎ ﺑﺎ آرﮔﻮﻣﺎﻧﮫﺎی ﻣﺨﺘﻠﻒ. ﺑﻪ اﻳﻦ ﻧﻮع ﺗﻮاﺑﻊ و ﻳﺎ ﻣﺘﺪھﺎ اﺻﻄﻼﺣﺎ ‪  Overloaded Methods‬ ﻣﻲ ﮔﻮﻳﻨﺪ . ( ﻓﻜﺮ ﻛـﻨﻢ آﻧـﺮا‬ ‫ﺳﺮﺑﺎرﮔﺬاری ﺗﻮاﺑﻊ ﺗﺮﺟﻤﻪ  ﻛﺮده اﻧﺪ! ) ﺑﺮای ﻣﺜﺎل :‬
‫;(‪void myMethod(int p۱‬‬
‫;(‪void myMethod(int p۱, int p۲‬‬
‫;(‪void myMethod(int p۱, string s۱‬‬
&nbsp;

‫ﻣﺜﺎل  : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و  ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۸‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬ ‫ﺳﭙﺲ ﻛﺪ زﻳﺮ را درون آن  ﺑﻨﻮﻳﺴﯿﺪ :‬
‫;‪using System‬‬

‫‪namespace ex۱۸‬‬
‫}‬
‫‪class Class۱‬‬

‫}
[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}‬
‫;()‪writeIT‬‬

‫;(۲۱)‪writeIT‬‬

‫;()‪Console.ReadLine‬‬
‫{‬

()‪public static void writeIT‬‬
}
‫;( &quot;.‪Console.WriteLine(&quot; writeIT() Ver‬‬
‫{‬

‫(‪public static void writeIT(int intI‬‬
‫}‬
‫;( ‪Console.WriteLine(&quot; writeIT(intI) Ver. = &quot; + intI‬‬
{


‫{‬
‫{‬


‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬

‫١- ﻧﺤﻮه ی ﺗﻌﺮﻳﻒ دو ﺗﺎﺑﻊ ﺑﺎ ﻳﻚ ﻧﺎم را ﻣﻼﺣﻈﻪ ﻣﻲ ﻧﻤﺎﻳﯿﺪ. اﻳﻨﻜﺎر در زﺑﺎن ﺳﻲ ﻣﻤﻨﻮع اﺳﺖ!‬
‫٢- ﻛﺎﻣﭙﺎﻳﻠﺮ ﺑﻪ ﺻﻮرت ھﻮﺷﻤﻨﺪ ﺑﺮ اﺳﺎس ﻧﻮع و ﺗﻌﺪاد آرﮔﻮﻣﺎﻧﮫﺎی ورودی ، ورژن ﻣﻨﺎﺳﺐ را اﻧﺘﺨﺎب و اﺟﺮا ﻣـﻲ‬ ‫ﻛﻨﺪ.‬

‫ﻧﻤﻮﻧﻪ ی ﺿﻌﯿﻔﻲ از اﻳﻦ ﺑﺤﺚ در وی ﺑﻲ ۶ ﺑﻪ ﺻﻮرت ﺗﻌﺮﻳﻒ ﺗﻮاﺑﻌﻲ ﺑﺎ ﭘﺎراﻣﺘﺮھﺎی ‪ Optional‬وﺟﻮد داﺷﺖ .‬
‫ﻣﺒﺎﺣﺚ ﺗﻜﻤﯿﻠﻲ آراﻳﻪ ھﺎ (آراﻳﻪ ھﺎی ﭼﻨﺪ ﺑﻌﺪی):‬

‫آراﻳﻪ  ھﺎی ﻣﻌﻤﻮﻟﻲ (ﻳﻚ ﺑﻌﺪی) را ﻣﻲ ﺗﻮان ﻳﻚ ردﻳﻒ ﺑﺎ ﺗﻌﺪادی ﺧﺎﻧﻪ ﺧﺎﻟﻲ آﻣﺎده ی ﭘﺮ  ﺷﺪن در ﻧﻈﺮ ﮔﺮﻓﺖ. آراﻳـﻪ ی ‫دوﺑﻌﺪی را ﻣﻲ ﺗﻮان ﻣﺎﻧﻨﺪ ﻳﻚ ﺟﺪول ﺗﺸﻜﯿﻞ ﺷﺪه از  ردﻳﻒ ھﺎ و ﺳﺘﻮن ھﺎ در ﻧﻈﺮ ﮔﺮﻓﺖ و اﻟﻲ آﺧﺮ...‬
‫ﺳﻲ ﺷﺎرپ دو ﻧﻮع آراﻳﻪ ی ﭼﻨﺪ ﺑﻌﺪی را ﭘﺸﺘﯿﺒﺎﻧﻲ ﻣﻲ ﻛﻨﺪ : ‪rectangular and jagged‬‬ 
‫در  ﻳﻚ آراﻳﻪ ی ‪ rectangular‬ ھﺮ ردﻳﻒ ، ﻃﻮﻟﺶ ﺑﺎ ردﻳﻒ ﺑﻌﺪی ﻳﻜﻲ اﺳﺖ. آراﻳـﻪ ی  ‪ jagged‬ در ﺣﻘﯿﻘـﺖ آراﻳـﻪ اﻳـﻲ از‬ ‫آراﻳﻪ ھﺎ اﺳﺖ ، ﺑﻨﺎﺑﺮاﻳﻦ ھﺮ ﻛﺪام از  آﻧﮫﺎ ﻣﻲ ﺗﻮاﻧﺪ ﻃﻮل ﻣﺨﺘﻠﻔﻲ داﺷﺘﻪ ﺑﺎﺷﺪ.‬

‫ﺗﻌﺮﻳﻒ ﻳﻚ آراﻳﻪ ی دوﺑﻌﺪی ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ :‬
type [,] array-name
&nbsp;
ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬ را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۹‬اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬
‫ﺳﭙﺲ ﻛﺪ زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬

‫;‪using System‬‬

‫‪namespace ex۱۹‬‬
‫}‬

class Class۱
{
[STAThread]
static void Main(string[] args)
{
const int rows = ۴;
const int columns = ۳;
// declare a ۴x۳ integer array
int[,] rectangularArray = new int[rows, columns];
// populate the array
for (int i = ۰;i < rows;i++)
{
for (int j = ۰;j]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


<item>
<title>درس نهم</title>
<link>https://mhdsoft.loxblog.com/درس-نهم</link>
<guid>https://mhdsoft.loxblog.com/درس-نهم</guid>

<description><![CDATA[
&nbsp;ﭼﮕﻮﻧﻪ از ﻳﻚ ﺗﺎﺑﻊ ﺑﯿﺶ از ﻳﻚ ﺧﺮوﺟﻲ درﻳﺎﻓﺖ ﻛﻨﯿﻢ ؟

‫ﻇﺎھﺮا ﺑﻪ ﻧﻈﺮ ﻣﻲ رﺳﺪ ﻛﻪ ﺗﻮاﺑﻊ ﻓﻘﻂ ﻣﻲ ﺗﻮاﻧﻨﺪ ﻳﻚ ‪ return‬ داﺷﺘﻪ ﺑﺎﺷﻨﺪ و ﺑﻼﻓﺎﺻﻠﻪ ﭘـﺲ از ﻓﺮاﺧـﻮاﻧﻲ ‪ return‬ ﻛـﺎر‬ ‫ﺗﺎﺑﻊ ﭘﺎﻳﺎن ﻳﺎﻓﺘﻪ اﺳﺖ. در ﺳﻲ ﺷﺎرپ دو ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ﺑﻪ ﻧﺎم ھﺎی ‪ ref‬ و ‪ out‬ اﺿﺎﻓﻪ ﺷﺪه اﻧﺪ ﻛﻪ اﻳﻦ اﻣﺮ را ﺳﺎده‬ ‫ﺗﺮ ﻣﻲ ﻛﻨﻨﺪ.‬
‫اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪: out‬‬ ......
&nbsp;ﭼﮕﻮﻧﻪ از ﻳﻚ ﺗﺎﺑﻊ ﺑﯿﺶ از ﻳﻚ ﺧﺮوﺟﻲ درﻳﺎﻓﺖ ﻛﻨﯿﻢ ؟

‫ﻇﺎھﺮا ﺑﻪ ﻧﻈﺮ ﻣﻲ رﺳﺪ ﻛﻪ ﺗﻮاﺑﻊ ﻓﻘﻂ ﻣﻲ ﺗﻮاﻧﻨﺪ ﻳﻚ ‪ return‬ داﺷﺘﻪ ﺑﺎﺷﻨﺪ و ﺑﻼﻓﺎﺻﻠﻪ ﭘـﺲ از ﻓﺮاﺧـﻮاﻧﻲ ‪ return‬ ﻛـﺎر‬ ‫ﺗﺎﺑﻊ ﭘﺎﻳﺎن ﻳﺎﻓﺘﻪ اﺳﺖ. در ﺳﻲ ﺷﺎرپ دو ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ﺑﻪ ﻧﺎم ھﺎی ‪ ref‬ و ‪ out‬ اﺿﺎﻓﻪ ﺷﺪه اﻧﺪ ﻛﻪ اﻳﻦ اﻣﺮ را ﺳﺎده‬ ‫ﺗﺮ ﻣﻲ ﻛﻨﻨﺪ.‬
‫اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪: out‬‬

‫از ‪ out‬ در ﺗﻌﺮﻳﻒ ﺗﺎﺑﻊ ﻗﺒﻞ از ﻣﻌﺮﻓﻲ ﻧـﻮع آرﮔﻮﻣـﺎن ورودی اﺳـﺘﻔﺎده ﻣـﻲ ﻛﻨـﯿﻢ . در اﻳـﻦ ﺣﺎﻟـﺖ ﺑﺠـﺎی اﻳﻨﻜـﻪ ﺑـﻪ اﻳـﻦ ‫آرﮔﻮﻣﺎن ، آرﮔﻮﻣﺎن ورودی ﺑﮕﻮﻳﯿﻢ ، ﻣﻲ ﺗﻮان آﻧﺮا آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ ﻧﺎﻣﯿـﺪ. ﺗـﺎ ﻳـﻚ ﻣﺜـﺎل را در اﻳـﻦ زﻣﯿﻨـﻪ ﺑـﺎ ھـﻢ ﻣـﺮور‬ ‫ﻧﻜﻨﯿﻢ اﻳﻦ ﻣﻮرد ﻣﻔﮫﻮم ﻧﺨﻮاھﺪ ﺑﻮد :‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۵‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬
‫ﺳﭙﺲ ﻛﺪ زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬
‫;‪using System‬‬

‫‪namespace ex۱۵‬‬
‫}‬
‫‪class Class۱‬‬
‫}‬

‫( ‪public static int TestOut( out char i‬‬
‫}
‫;'‪i = 'b‬‬
‫;۱- ‪return‬‬
‫{‬

‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}‬
‫;‪char i‬‬ ‫‪// variable need not be initialized‬‬
‫;((‪Console.WriteLine(TestOut(out i‬‬
‫;(‪Console.WriteLine(i‬‬
‫;()‪Console.ReadLine‬‬
‫{‬
{
‫{

‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١- در ﺗﺎﺑﻊ ‪ TestOut‬آرﮔﻮﻣﺎن ‪ i‬از ﺑﺎ ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪ out‬ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ. ﻳﻌﻨﻲ اﻳﻨﻜﻪ درون ﺗﺎﺑﻊ ھـﺮ ﮔﻮﻧـﻪ‬ ‫ﺗﻐﯿﯿﺮی روی ‪ i‬ اﻧﺠﺎم ﺷﻮد ، ﺧﺎرج از ﺗﺎﺑﻊ ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ اﺳﺖ.‬
‫٢- ﺗﻮاﺑﻌﻲ ﻛﻪ دارای آرﮔﻮﻣﺎﻧﮫﺎﻳﻲ ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﺎ ﻛﻠﻤﻪ ی ﻛﻠﯿـﺪی ‪ out‬ھـﺴﺘﻨﺪ ﻧﯿـﺰ ﻣـﻲ ﺗﻮاﻧﻨـﺪ از ‪ return‬ ھـﻢ‬ ‫اﺳﺘﻔﺎده ﻛﻨﻨﺪ. ھﻤﺎﻧﻨﺪ ﻣﺜﺎل ﻓﻮق.‬
&nbsp;

اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪: ref‬‬

‫اﻳﻦ ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ﻧﯿﺰ دﻗﯿﻘﺎ ھﻤﺎﻧﻨﺪ ‪ out‬ ﻋﻤﻞ ﻣﻲ ﻛﻨﺪ و ﻧﺤﻮه ی ﺗﻌﺮﻳﻒ و اﺳﺘﻔﺎده از آن ﻧﯿﺰ ﻣﺸﺎﺑﻪ اﺳـﺖ ﺑـﺎ اﻳـﻦ‬ ‫ﺗﻔﺎوت ﻛﻪ آرﮔﻮﻣﺎﻧﻲ ﻛﻪ ﺑﻪ اﻳﻦ ﻧﻮع ﺗﻮاﺑﻊ ﻓﺮﺳﺘﺎده ﻣﻲ ﺷﻮد ﺑﺎﻳﺪ ﻣﻘﺪار دھﻲ اوﻟﯿﻪ ﺷﺪه ﺑﺎﺷﺪ.‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۶‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬
‫ﺳﭙﺲ ﻛﺪ زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬
‫;‪using System‬‬

‫‪namespace ex۱۶‬‬
‫}‬
‪class Class۱‬‬
‫}‬
(‪public static void FillArray(ref int[] arr‬‬
‫}‬
‫:‪// Create the array on demand‬‬
‫(‪if (arr == null‬‬
‫;[۰۱]‪arr = new int‬‬
‫:‪// Otherwise fill the array‬‬
‫;۳۲۱ = [۰]‪arr‬‬
‫;۴۲۰۱ = [۴]‪arr‬‬
{‬

‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
}
‫:‪// Initialize the array‬‬
‫;{۵,۴,۳,۲,۱} = ‪int[] myArray‬‬

‫:‪// Pass the array using ref‬‬
‫;(‪FillArray(ref myArray‬‬

‫:‪// Display the updated array‬‬
‫;(&quot;:‪Console.WriteLine(&quot;Array elements are‬‬
‫(++‪for (int i = ۰; i < myArray.Length; i‬‬
‫;([‪Console.WriteLine(myArray[i‬‬
‫;()‪Console.ReadLine‬‬
{‬
{
‫{‬


‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١- ھﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻼﺣﻈﻪ ﻣﻲ ﻛﻨﯿﺪ در اﻳﻨﺠﺎ ھﻨﮕﺎم اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ‪ FillArray‬ﺑﺎﻳﺪ آرﮔﻮﻣﺎﻧﻲ را ﻛﻪ ﻣﻲ ﺧـﻮاھﯿﻢ ‫ﺑﻪ آن ﭘﺎس ﻛﻨﯿﻢ ﻣﻘﺪار دھﻲ اوﻟﯿﻪ ﻛﻨﯿﻢ.‬
‫٢- ﭘﺲ ﻣﻲ ﺗﻮان ﻧﺘﯿﺠﻪ ﮔﺮﻓﺖ آرﮔﻮﻣﺎﻧﮫﺎﻳﻲ ﻛﻪ ﺑﺎ ‪ out‬ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ ﺑـﻪ ﺻـﻮرت ﺧـﺎﻟﺺ ﺧﺮوﺟـﻲ ھـﺴﺘﻨﺪ و‬ ‫ﻧﯿﺎزی ﺑﻪ ﻣﻘﺪار دھﻲ اوﻟﯿﻪ ھﻨﮕـﺎم اﺳـﺘﻔﺎده از آﻧﮫـﺎ وﺟـﻮد ﻧـﺪارد. از ‪ ref‬ ھﻨﮕـﺎﻣﻲ اﺳـﺘﻔﺎده ﻣـﻲ ﻛﻨـﯿﻢ ﻛـﻪ‬ ‫ﺑﺨﻮاھﯿﻢ روی ﻣﺘﻐﯿﺮ ﻣﻮﺟﻮد و ﻣﻘﺪار دھﻲ ﺷﺪه ی ﺧﺎرج از ﺗﺎﺑﻊ ، درون ﺗﺎﺑﻊ ﻋﻤﻠﯿﺎﺗﻲ ﺻﻮرت ﮔﯿﺮد و ﺳـﭙﺲ‬ ‫ھﻤﺎن ﻣﺘﻐﯿﺮ دﺳﺘﻜﺎری ﺷﺪه ، ﻋﻮدت داده ﺷﻮد.‬


‫ﺗﻌﺮﻳﻒ ﺗﺎﺑﻌﻲ ﺑﺎ ﺗﻌﺪاد آرﮔﻮﻣﺎﻧﮫﺎی ﻧﺎﻣﻌﻠﻮم :‬

‫ﮔﺎھﻲ از اوﻗﺎت ﻧﯿﺎز اﺳﺖ ﺗﺎ ﺗﺎﺑﻌﻲ ﺗﻌﺮﻳﻒ ﻛﻨﯿﻢ ﻛﻪ ﺗﻌﺪاد آرﮔﻮﻣﺎﻧﮫﺎی آن ﻣﺘﻐﯿﺮ ﺑﺎﺷـﻨﺪ .ﺑـﺮای اﻳـﻦ ﻣﻨﻈـﻮر از ﻛﻠﻤـﻪ ی‬ ‫ﻛﻠﯿﺪی ‪ params‬ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.‬
‫دوﻧﻜﺘﻪ در اﻳﻨﺠﺎ ﺣﺎﺋﺰ اھﻤﯿﺖ اﺳﺖ:‬
‫١- در ھﺮ ﺗﺎﺑﻌﻲ ﺗﻨﮫﺎ ﻣﻲ ﺗﻮان ﻳﻜﺒﺎر از ‪ params‬اﺳﺘﻔﺎده ﻛﺮد.‬
‫٢- ﭘﺲ از ﺑﻜﺎر ﺑﺮدن ‪ params‬ دﻳﮕﺮ ﻧﻤﻲ ﺗﻮان ھﯿﭻ آرﮔﻮﻣﺎﻧﻲ را ﺗﻌﺮﻳﻒ ﻛﺮد.‬

‫ﻳﻜﻲ از ﻣﺜﺎﻟﮫﺎﻳﻲ ﻛﻪ در اﻳﻦ زﻣﯿﻨﻪ ﻣﻲ ﺗﻮان اراﺋﻪ داد اﺳﺘﻔﺎده از آراﻳـﻪ ھـﺎ ﺑـﻪ ﻋﻨـﻮان آرﮔﻮﻣـﺎن ورودی اﺳـﺖ. در اﻳـﻦ ‫ﺣﺎﻟﺖ ﻳﺎ ﻣﻲ ﺗﻮان ﻳﻚ آراﻳﻪ را ﺑﻪ ﺻﻮرت ﻛﺎﻣﻞ ﺑﻪ ﺗﺎﺑﻊ ﻣﻌﺮﻓﻲ ﻛﺮد و ﻳـﺎ ﺗﻨﮫـﺎ ﻧـﺎم آﻧـﺮا ﺑـﻪ ﺗـﺎﺑﻊ ﭘـﺎس ﻛـﺮد. ﻣﺜـﺎل زﻳـﺮ را‬ ‫ﻣﻼﺣﻈﻪ ﻛﻨﯿﺪ :‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۷‬اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬
‫ﺳﭙﺲ ﻛﺪ زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬
‫;‪using System‬‬

‫‪namespace ex۱۷‬‬
‫}‬
‪class Class۱‬‬
‫}

(‪public static void UseParams(params int[] list‬‬
‫}
( ++‪for ( int i = ۰ ; i < list.Length ; i‬‬
‫;([‪Console.WriteLine(list[i‬‬
‫;()‪Console.WriteLine‬‬
‫{‬

[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}
‫;(۳ ,۲ ,۱)‪UseParams‬‬

‫;{۲۱,۱۱,۰۱} [۳]‪int[] myarray = new int‬‬
‫;(‪UseParams(myarray‬‬

‫;()‪Console.ReadLine‬‬

‫{‬
{‬
‫{‬

‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬

‫١- در ﺗﺎﺑﻊ ‪ main‬ ﺑﻪ دو ﺻﻮرت از ﺗﺎﺑﻊ ‪ UseParams‬ اﺳﺘﻔﺎده ﺷﺪه اﺳـﺖ. ﻳـﺎ اﻳﻨﻜـﻪ ﺧﯿﻠـﻲ ﺳـﺎده ھـﺮ ﺗﻌـﺪاد ‫آرﮔﻮﻣﺎن را ﻣﻲ ﺗﻮان ﺑﻪ ﺗﺎﺑﻊ ﻓﺮﺳﺘﺎد و ﻳﺎ اﻳﻨﻜﻪ در اداﻣﻪ آراﻳﻪ اﻳﻲ رﺳﻤﺎ ﺗﻌﺮﻳـﻒ و ﺳـﭙﺲ ﺑـﻪ ﺗـﺎﺑﻊ ﻓﺮﺳـﺘﺎده‬ ‫ﺷﻮد.‬
‫٢- ﻧﺤﻮه ی ﺗﻌﺮﻳﻒ و اﺳﺘﻔﺎده از آراﻳﻪ ھﺎ ﺑﻪ ﺻﻮرت آرﮔﻮﻣﺎن ورودی را ﻧﯿﺰ ﻣﻲ ﺗﻮان در ﻣﺜﺎل ﻓﻮق آﻣﻮﺧﺖ.‬
&nbsp;

منبع : برگرفته از سایت Vcsharp.ir
]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


<item>
<title>درس هشتم</title>
<link>https://mhdsoft.loxblog.com/درس-هشتم</link>
<guid>https://mhdsoft.loxblog.com/درس-هشتم</guid>

<description><![CDATA[
&nbsp;ﺗﻌﺮﻳﻒ ﻣﺘﺪھﺎ در ﺳﻲ ﺷﺎرپ‬

‫در اﻳﻦ ﻗﺴﻤﺖ ﺑﻪ ﻳﻜﻲ از ﻣﮫﻤﺘﺮﻳﻦ ﻣﺒﺎﺣﺚ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺳﻲ ﺷﺎرپ ﻣﻲ رﺳﯿﻢ.‬
‫ﻣﺘﺪھﺎ در ﺳﻲ ﺷﺎرپ و ﻳﺎ ھﻤﺎن ﺗﻮاﺑﻊ در زﺑﺎن ‪ ، C‬اﻋﻀﺎی ﻳﻚ ﺷﻲء ﻳﺎ ﻛﻼس ھﺴﺘﻨﺪ و ﻣﺠﻤﻮﻋﻪ ای از ﻳﻚ ﺳـﺮی‬ ‫از ﻛﺎرھﺎ را اﻧﺠﺎم ﻣﻲ دھﻨﺪ. ﻓﺮض ﻛﻨﯿﺪ در ﺑﺮﻧﺎﻣﻪ ی ﺷﻤﺎ ، ﻗﺴﻤﺘﻲ ﺑﺎﻳﺪ ﻳﻚ ﻋﻤﻠﯿﺎت رﻳﺎﺿﻲ ﺧـﺎص را اﻧﺠـﺎم دھـﺪ و‬ ‫اﻳﻦ ﻗﺴﻤﺖ از ﻛﺪ ﻛﻪ ﺷـﺎﻣﻞ ﭼﻨـﺪﻳﻦ ﺧـﻂ ﻧﯿـﺰ ﻣـﻲ ﮔـﺮدد ﺑﺎﻳـﺪ ﺑﺎرھـﺎ و ﺑﺎرھـﺎ در ﺑﺮﻧﺎﻣـﻪ ﺻـﺪا زده ﺷـﻮد. ﺑـﺮای ﻧﻈـﻢ‬ ‫ﺑﺨﺸﯿﺪن ﺑﻪ ﺑﺮﻧﺎﻣﻪ ، آﻧﮫﺎ را ﻣﻲ ﺗﻮان ﺑﻪ ﺻﻮرت ﺗﻮاﺑﻊ ﺑﺴﺘﻪ ﺑﻨﺪی ﻛﺮد و ﺑﺠﺎی ﻧﻮﺷﺘﻦ ﭼﻨﺪﻳﻦ ﺧﻂ ﺗﻜـﺮاری، ﻓﻘـﻂ ﻧـﺎم‬ ‫اﻳﻦ ﺑﺴﺘﻪ ( ﺗﺎﺑﻊ ) و ﭘﺎراﻣﺘﺮھﺎی آن را ﻓﺮاﺧﻮاﻧﻲ ﻧﻤﻮد.‬v
&nbsp;ﺗﻌﺮﻳﻒ ﻣﺘﺪھﺎ در ﺳﻲ ﺷﺎرپ‬

‫در اﻳﻦ ﻗﺴﻤﺖ ﺑﻪ ﻳﻜﻲ از ﻣﮫﻤﺘﺮﻳﻦ ﻣﺒﺎﺣﺚ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺳﻲ ﺷﺎرپ ﻣﻲ رﺳﯿﻢ.‬
‫ﻣﺘﺪھﺎ در ﺳﻲ ﺷﺎرپ و ﻳﺎ ھﻤﺎن ﺗﻮاﺑﻊ در زﺑﺎن ‪ ، C‬اﻋﻀﺎی ﻳﻚ ﺷﻲء ﻳﺎ ﻛﻼس ھﺴﺘﻨﺪ و ﻣﺠﻤﻮﻋﻪ ای از ﻳﻚ ﺳـﺮی‬ ‫از ﻛﺎرھﺎ را اﻧﺠﺎم ﻣﻲ دھﻨﺪ. ﻓﺮض ﻛﻨﯿﺪ در ﺑﺮﻧﺎﻣﻪ ی ﺷﻤﺎ ، ﻗﺴﻤﺘﻲ ﺑﺎﻳﺪ ﻳﻚ ﻋﻤﻠﯿﺎت رﻳﺎﺿﻲ ﺧـﺎص را اﻧﺠـﺎم دھـﺪ و‬ ‫اﻳﻦ ﻗﺴﻤﺖ از ﻛﺪ ﻛﻪ ﺷـﺎﻣﻞ ﭼﻨـﺪﻳﻦ ﺧـﻂ ﻧﯿـﺰ ﻣـﻲ ﮔـﺮدد ﺑﺎﻳـﺪ ﺑﺎرھـﺎ و ﺑﺎرھـﺎ در ﺑﺮﻧﺎﻣـﻪ ﺻـﺪا زده ﺷـﻮد. ﺑـﺮای ﻧﻈـﻢ‬ ‫ﺑﺨﺸﯿﺪن ﺑﻪ ﺑﺮﻧﺎﻣﻪ ، آﻧﮫﺎ را ﻣﻲ ﺗﻮان ﺑﻪ ﺻﻮرت ﺗﻮاﺑﻊ ﺑﺴﺘﻪ ﺑﻨﺪی ﻛﺮد و ﺑﺠﺎی ﻧﻮﺷﺘﻦ ﭼﻨﺪﻳﻦ ﺧﻂ ﺗﻜـﺮاری، ﻓﻘـﻂ ﻧـﺎم‬ ‫اﻳﻦ ﺑﺴﺘﻪ ( ﺗﺎﺑﻊ ) و ﭘﺎراﻣﺘﺮھﺎی آن را ﻓﺮاﺧﻮاﻧﻲ ﻧﻤﻮد.‬

‫در ﺳﻲ ﺷﺎرپ ﻳﻚ ﺗﺎﺑﻊ ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮد :‬
‫ ‫ (ﻧﻮع و اﺳﺎﻣﻲ ﭘﺎراﻣﺘﺮھﺎ) ﻧﺎم ﺗﺎﺑﻊ ﻧﻮع ﺧﺮوﺟﻲ ﺗﺎﺑﻊ‬ ‬ﺳﻄﺢ دﺳﺘﺮﺳﻲ ﺑﻪ ﺗﺎﺑﻊ‬&nbsp;
‫}
‫ﺑﺪﻧﻪ ی ﺗﺎﺑﻊ‬
‫{

‫ﺑﺮای ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺘﺪ ﻳﺎ ﺗﺎﺑﻊ اﺑﺘﺪا ﺳﻄﺢ دﺳﺘﺮﺳﻲ ﺑﻪ آن ﻣﺎﻧﻨﺪ ‪ public‬و ‪ private‬ ﺳﭙﺲ ﻧﻮع ﺧﺮوﺟـﻲ ﺗـﺎﺑﻊ ﻣﺎﻧﻨـﺪ Void&nbsp;
‫‪ ) ‬ھﯿﭽﻲ ) ذﻛﺮ ﻣﻲ ﮔﺮدد ﻛﻪ داﺧﻞ اﻳﻦ ﭘﺮاﻧﺘﺰھﺎ ﻣﻲ ﺗﻮان ورودی ھﺎی ﺗـﺎﺑﻊ ﻳـﺎ ﺑﻘـﻮﻟﻲ آرﮔﻮﻣـﺎن ھـﺎی ورودی را ‬ ‫ﻣﻌﺮﻓﻲ ﻛﺮد. ﺳﭙﺲ ﺗﺎﺑﻊ ﺑﺎﻳﺪ ﺑﺎ { ﺷﺮوع و ﺑﺎ ﻳﻚ } ﺧﺎﺗﻤﻪ ﻳﺎﺑﺪ.‬

ﺑﺮای ﻣﺜﺎل :‬
‫( ‪public int myFunc( int x‬‬
‫}‬
‫.&hellip;...‬
‫{
‫ھﺮ ﺗﺎﺑﻌﻲ ﻣﻲ ﺗﻮاﻧﺪ ﺻـﻔﺮ یا ﺗﻌـﺪاد ﺑﯿـﺸﻤﺎری آرﮔﻮﻣـﺎن ورودی و ﺻـﻔﺮ یا ﺗﻌـﺪاد ﺑﯿـﺸﻤﺎری ﺧﺮوﺟـﻲ داﺷـﺘﻪ ﺑﺎﺷـﺪ.‬ ‫ﺑﻮﺳﯿﻠﻪ ﻳﻚ ﺗﺎﺑﻊ ﻣﻲ ﺗﻮان ﭘﯿﭽﯿﺪﮔﻲ ﻛﺎر را ﻣﺨﻔﻲ ﻛﺮد و ﺻﺮﻓﺎ ﺑﺎ ﺻﺪا زدن ﻧﺎم آن ، ﻳﻚ ﺳﺮی از ﻋﻤﻠﯿﺎت را اﻧﺠـﺎم داد. ‫ﮔﺎھﻲ از اوﻗﺎت ﻻزم ﻣﻲ ﺷﻮد دو ﻳﺎ ﭼﻨﺪ ﺗﺎﺑﻊ ﺑﺎ ﻳﻚ ﻧﺎم داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﺑﻄﻮرﻳﻜﻪ ﭘﺎراﻣﺘﺮھﺎی ورودی ﻳﺎ ﻣﻘﺎدﻳﺮ ﺧﺮوﺟـﻲ ‬ ‫و ﻳﺎ ﻧﻮع آرﮔﻮﻣﺎن ھﺎی ورودی آﻧﮫﺎ ﺑﺎ ھﻢ ﻣﺘﻔﺎوت ﺑﺎﺷﺪ ﺑﻪ اﻳﻦ ﻛﺎر ‪ overloading‬ ﻣﻲ ﮔﻮﻳﻨﺪ.‬
‫ﺑﺴﯿﺎری از ﻛﻼس ھﺎی دات ﻧـﺖ ﻓـﺮﻳﻢ ورک ﻣﺘـﺪھﺎ و ﻳـﺎ ﺗﻮاﺑـﻊ ﻣﻔﯿـﺪ ﺣﺎﺿـﺮ و آﻣـﺎده ای را دارﻧـﺪ. ﺑـﺮای ﻣﺜـﺎل ﻛـﻼس‬
‫‪ ، DateTime‬ﻣﺘﺪی ﺑﻪ ﻧﺎم ‪ ToLongDatastring‬ دارد ﻛﻪ ﺗﺎرﻳﺦ را ﺑﻪ ﺻﻮرت ﻳﻚ رﺷﺘﻪ ﻃﻮﻻﻧﻲ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ.‬


‫ﺗﻮاﺑﻊ ‪: void‬‬

‫ﺗﻮاﺑﻌﻲ ﻛﻪ ﺑﺎ ﻧﻮع ‪ void‬ ﻣﻌﺮﻓﻲ ﻣﻲ ﺷﻮﻧﺪ ھﯿﭻ ﺧﺮوﺟﻲ ﻧﺪارﻧﺪ و در زﺑﺎن وﻳﮋوال ﺑﯿﺴﯿﻚ ﺑـﻪ آْﻧﮫـﺎ ‪ sub‬و در دﻟﻔـﻲ ﺑـﻪ ‫آﻧﮫﺎ ‪ procedure‬ ﻣﻲ ﮔﻮﻳﻨﺪ.‬


ﺑﺎزﮔﺮداﻧﺪن ﻳﻚ ﻣﻘﺪار از ﻳﻚ ﺗﺎﺑﻊ :‬

‫ﭘﺲ از اﻳﻨﻜـﻪ ﻋﻤﻠﯿـﺎت ﻳـﻚ ﻣﺠﻤﻮﻋـﻪ از ﻛـﺪھﺎ درون ﺗـﺎﺑﻊ ﺑـﻪ ﭘﺎﻳـﺎن رﺳـﯿﺪ ﺑـﺎ اﺳـﺘﻔﺎده از ﻛﻠﻤـﻪ ی ‪ return‬ ﻣـﻲ ﺗـﻮان‬
ﺧﺮوﺟﻲ ﺗﺎﺑﻊ را ﻣﻌﺮﻓﻲ ﻛﺮد. ﻻزم ﺑﻪ ذﻛﺮ اﺳﺖ ، ھﺮﺟﺎﻳﻲ اﻳﻦ ﻛﻠﻤﻪ ی ‪ return‬ذﻛﺮ ﺷﻮد ﻛﺎر ﺗﺎﺑﻊ ﺧﺎﺗﻤﻪ ﻣﻲ ﻳﺎﺑﺪ.‬


ﮫﺘﺮ اﺳﺖ ﻣﻮارد ﻓﻮق را ﺑﺎ ﭼﻨﺪ ﻣﺜﺎل ﻣﺮور ﻛﻨﯿﻢ :‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣﻪ ی ﺳﻲ ﺷﺎرپ ﺟﺪﻳﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ۳۱‪ ex‬اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ. در‬ ‫اﻳﻨﺠﺎ ﻣﻲ ﺧﻮاھﯿﻢ ﺗﺎﺑﻌﻲ را ﺗﻌﺮﻳﻒ ﻛﻨﯿﻢ ﻛﻪ ﺳﻪ ﺑﺮاﺑﺮ ﺟﺬر ﻳﻚ ﻋﺪد را ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ.‬
‫;‪using System‬‬

‫‪namespace ex۱۳‬‬
‫}‬
‪class Class۱‬‬
}‬
‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
}‬
‫;( (۳)‪Console.WriteLine( int۳SQL‬‬
‫;()‪Console.ReadLine‬‬
‫{‬

( ‪public static double int۳SQL( double intInput‬‬
‫}
‫;۰=‪double i‬‬
‫;( ‪i = Math.Sqrt( intInput‬‬
‫;‪return i‬‬
{

‫{‬
‫{‬

‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬

‫١- از ﺷﻲء ‪ Math‬ در ﺳﻲ ﺷﺎرپ ﻣﻲ ﺗﻮان ﺑﺮای اﻧﺠﺎم ﻳﻚ ﺳﺮی ﻋﻤﻠﯿـﺎت رﻳﺎﺿـﻲ اﺑﺘـﺪاﻳﻲ اﺳـﺘﻔﺎده ﻛـﺮد. در‬ ‫اﻳﻨﺠﺎ از ﻣﺘﺪ ﺟﺬر ﮔﺮﻓﺘﻦ آن اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ.‬
‫٢- در ﺗﻌﺮﻳﻒ ﺗﺎﺑﻊ ﺧﻮدﻣﺎن از ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪ static‬اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ. درون ﺗﺎﺑﻊ ‪ Main‬ﻧ ﻤﻲ ﺗﻮان ﺗﻮاﺑـﻊ‬ ‫ﻏﯿﺮ اﺳﺘﺎﺗﯿﻚ را ﻓﺮاﺧﻮاﻧﻲ ﻛﺮد. ﻓﻌﻼ اﻳﻦ ﻧﻜﺘﻪ را ﺑﺨﺎﻃﺮ را داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﺗﺎ در ﻣﻘﺎﻻت ﺑﻌﺪی ﺑﯿﺸﺘﺮ راﺟـﻊ ﺑـﻪ ‫آن ﺻﺤﺒﺖ ﺷﻮد.‬
&nbsp;
&nbsp;- ﺑﺪ ﻧﯿﺴﺖ ﺗﺎﺑﻊ ﺗﻌﺮﻳﻒ ﺷﺪه را ﻛﻤﻲ ﺑﯿﺸﺘﺮ آﻧﺎﻟﯿﺰ ﻛﻨﯿﻢ :‬
‫( ‪public static double int۳SQL( double intInput‬‬
‫}
‫;۰=‪double i‬‬
‫;( ‪i = Math.Sqrt( intInput‬‬
‫;‪return i‬‬
‫{

‫اﺑﺘـﺪا ﺳـﻄﺢ دﺳﺘﺮﺳـﻲ ﺑـﻪ ﺗـﺎﺑﻊ ذﻛـﺮ ﺷـﺪه اﺳـﺖ. ﭘﺎﺑﻠﯿـﻚ ، ﻳﻌﻨـﻲ اﻳـﻦ ﺗـﺎﺑﻊ ﺧـﺎرج از ﻛـﻼس ﻳـﻚ ﺑﺮﻧﺎﻣـﻪ ﻧﯿـﺰ ﻗﺎﺑـﻞ ‫دﺳﺘﺮﺳﻲ اﺳﺖ. ﺳﭙﺲ از ﻛﻠﻤﻪ ی ‪ static‬اﺳﺘﻔﺎده ﮔﺮدﻳﺪه ﻛﻪ ﺗﻮﺿﯿﺢ ﻣﺨﺘـﺼﺮی را در ﻣـﻮرد آن ﻣﻼﺣﻈـﻪ ﻛﺮدﻳـﺪ. در‬ ‫اداﻣﻪ ﻧﻮع ﺧﺮوﺟﻲ ﺗﺎﺑﻊ ﻛﻪ در اﻳﻨﺠﺎ ‪ double‬ﻣﻲ ﺑﺎﺷﺪ ﻣﻌﺮﻓﻲ ﮔﺮدﻳﺪه اﺳﺖ. دﻗﺖ ﻛﻨﯿـﺪ ﻛـﻪ ﺣﺘﻤـﺎ ﺑﺎﻳـﺪ ﻧـﻮع ﺗﻌﺮﻳـﻒ‬ ‫ﺷﺪه ﺑﺎ ﻣﻘﺪاری ﻛﻪ ﻳﻚ ﺗﺎﺑﻊ ﺑﺮ ﻣﻲ ﮔﺮداﻧﺪ ﻳﻜﺴﺎن ﺑﺎﺷﺪ و ﮔﺮﻧﻪ ﺑﺎ ﻳﻚ ﺧﻄﺎ ﺑﺮﻧﺎﻣﻪ ﻣﺘﻮﻗﻒ ﻣﻲ ﺷﻮد. ﺳﭙﺲ ﻧﺎم ﺗـﺎﺑﻊ‬ ‫ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ. داﺧﻞ ﭘﺮاﻧﺘﺰ ھﺎ ﻧﻮع و ﻧﺎم آرﮔﻮﻣﺎﻧﻲ اراﺋﻪ ﺷﺪه اﺳﺖ ﻛﻪ در ﺑﺪﻧﻪ ی ﺗﺎﺑﻊ اﺳﺘﻔﺎده ﻣﻲ ﮔـﺮدد. اﮔـﺮ‬ ‫ﺑﻪ ﺗﻌﺪاد ﺑﯿﺸﺘﺮی ﭘﺎراﻣﺘﺮ و ﻳﺎ آرﮔﻮﻣﺎن ﻧﯿﺎز ﺑﻮد ﻣﻲ ﺗﻮان آﻧﮫﺎ را ﺑﺎ , از ھﻢ ﺟﺪا ﻛﺮد.‬
‫ﭘﺲ از اﻳﻨﻜﻪ ﻋﻤﻠﯿﺎت ﺗﺎﺑﻊ ﺧﺎﺗﻤﻪ ﻣﻲ ﻳﺎﺑﺪ ﺑﺎ اﺳﺘﻔﺎده از ‪ return‬اﻳﻦ ﺧﺮوﺟﻲ را ﻣﻌﺮﻓﻲ ﻣﻲ ﻧﻤﺎﻳﯿﻢ. ‫ﺑﺮای اﺳﺘﻔﺎده از اﻳﻦ ﺗﺎﺑﻊ ﺑﻪ ﺳﺎدﮔﻲ ﻧﺎم ﺗﺎﺑﻊ و ﺳﭙﺲ ﭘﺮاﻧﺘﺰھﺎ ﺑﻪ ھﻤﺮاه ﻳﻚ ﻋﺪد دﻟﺨﻮاه را ﻣـﻲ ﻧﻮﻳـﺴﻢ ﻛـﻪ آﻧـﺮا در‬ ‫ﻣﺘﺪ ‪ Main‬ﺑﺮﻧﺎﻣﻪ ﻣﻲ ﺗﻮان ﻣﺸﺎھﺪه ﻛﺮد.‬


ﺗﻌﺮﻳﻒ ﺗﻮاﺑﻊ در ﻛﻼس ھﺎی دﻳﮕﺮ ﺑﺮﻧﺎﻣﻪ و ﻧﺤﻮه ی اﺳﺘﻔﺎده از آﻧﮫﺎ :‬

‫ﻳﻜﻲ از زﻳﺒﺎﻳﻲ ھﺎی ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺷﻲء ﮔﺮا ﻧﻈﻢ و ﺗﺮﺗﯿﺐ و ﺑﺴﺘﻪ ﺑﻨﺪی ﻛﺎرھﺎ ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ اﺻﻄﻼﺣﺎ در اﻳﻨﺠﺎ ﺑـﻪ‬ ‫آن ‪ encapsulation‬ ﻣﻲ ﮔﻮﻳﻨﺪ. ﻳﻌﻨﻲ ﻣﺎ ﻳﻚ ﺳﺮی از ﺗﻮاﺑﻊ و ﺧﻮاص را درون ﻛﭙﺴﻮﻟﻲ ﺑﻪ ﻧﺎم ﻛـﻼس ﻗـﺮار ﻣـﻲ دھـﯿﻢ‬ ‫ﺗﺎ ﺑﻪ ﺳﺎدﮔﻲ ﺑﺎرھﺎ و ﺑﺎرھﺎ از آن اﺳﺘﻔﺎده ﻧﻤﺎﻳﯿﻢ.‬
‫ﺑﺮای اﻳﻨﻜﺎر ﺑﻪ ﺳﺎدﮔﻲ ﻳﻚ ﺗﻮاﺑﻊ را ﺑﻪ ﺻﻮرت ﻣﻌﻤﻮل درون ﻛﻼس ﺗﻌﺮﻳﻒ ﻣﻲ ﻧﻤﺎﻳﯿﻢ و ﺳـﭙﺲ ھﻤﺎﻧﻨـﺪ ﺧـﻮاص ﻛـﻪ در‬ ‫ﻣﻮرد آﻧﮫﺎ ﺻﺤﺒﺖ ﺷﺪ ، از ﺗﻮاﺑﻊ ﻣﻲ ﺗﻮان اﺳﺘﻔﺎده ﻛﺮد ﺑـﺎ اﻳـﻦ ﺗﻔـﺎوت ﻛـﻪ ھﻨﮕـﺎم ﻛـﺎر ﺑـﺎ ﺗﻮاﺑـﻊ ﺣﺘـﻲ اﮔـﺮ آﻧﮫـﺎ ھـﯿﭻ ‫آرﮔﻮﻣﺎن و ﻳﺎ ﭘﺎراﻣﺘﺮ ورودی ھﻢ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﻨﺪ ذﻛﺮ ﭘﺮاﻧﺘﺰھﺎ اﻟﺰاﻣﻲ اﺳﺖ.‬

‫ﻣﺜﺎﻟﻲ دﻳﮕﺮ در اﻳﻦ زﻣﯿﻨﻪ :‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬ را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۴‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬
‫ﺳﭙﺲ از ﻣﻨﻮی ﭘﺮوژه ﻳﻚ ﻛﻼس ﺟﺪﻳﺪ را ﺑﻪ ﺑﺮﻧﺎﻣﻪ اﺿﺎﻓﻪ ﻧﻤﺎﻳﯿﺪ ( ﻧﺎم آﻧﺮا ‪ clsTools‬ﺑﮕﺬارﻳﺪ ) .‬
‫;‪using System‬‬

‫‪namespace ex۱۴‬‬
‫}
‫‪public class clsTools‬‬
}
‫()‪public clsTools‬‬
‫}
{‬

‫( ‪public uint intCalc ( uint a , uint b‬‬
‫}‬
‫‪uint‬‬ ‫;(‪c = Math.Min (a,b‬‬
‫; (‪double x = Math.Sqrt(c‬‬
‫‪uint‬‬ ‫;(‪w = Convert.ToUInt۳۲ (x‬‬
‫;‪return w‬‬
{‬
{‬
‫{‬

‫ﺳﭙﺲ در ﻣﺘﺪ ‪ Main‬ ﺑﺮﻧﺎﻣﻪ ﻣﻲ ﺗﻮان ﺑﻪ ﺻﻮرت زﻳﺮ از آن اﺳﺘﻔﺎده ﻛﺮد :‬
‫;‪using System‬‬

‫namespace ex۱۴‬‬
‫}‬
‫‪class Class۱‬‬
‫}‬
[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}
‫;()‪clsTools m_var = new clsTools‬‬
‫;((۹,۴)‪Console.WriteLine( m_var.intCalc‬‬
‫;()‪Console.ReadLine‬‬
‫{
‫{
‫{

‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١- ﺗﺎﺑﻊ ‪ intCalc‬ ﻣﺎ دو ﻋﺪد ﺻﺤﯿﺢ ﻣﺜﺒﺖ را ﻣﻲ ﮔﯿﺮد و ﺳﭙﺲ ﺟﺬر ﻛﻮﭼﻜﺘﺮﻳﻦ دو ﻋﺪد ورودی را ﻣﺤﺎﺳـﺒﻪ ﻣـﻲ‬ ‫ﻛﻨﺪ.‬
‫٢- ﺑﺮای ﺗﺒﺪﻳﻞ ﻧﻮع ھﺎی ﻋﺪدی ﻣﺨﺘﻠﻒ ﺑﻪ ھﻢ ﻣﻲ ﺗﻮان از ﺷﻲء ‪ Convert‬اﺳﺘﻔﺎده ﻛﺮد.‬
‫٣- ﺑﺪون اﺳﺘﻔﺎده از ﺷﻲء ‪ Convert‬ﻳﻜﺒﺎر ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﻛﻨﯿﺪ و دﻟﯿﻞ ﺧﻄﺎی ﺑﻮﺟﻮد آﻣﺪه را ﺑﯿﺎن ﻧﻤﺎﻳﯿﺪ.‬

منبع : برگرفته از سایتVcsharp.ir
&nbsp;]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


<item>
<title>درس هفتم</title>
<link>https://mhdsoft.loxblog.com/درس-هفتم</link>
<guid>https://mhdsoft.loxblog.com/درس-هفتم</guid>

<description><![CDATA[
دو ﻣﻮرد ﺗﻜﻤﯿﻠﻲ در ﻣﻮرد ﺣﻠﻘﻪ ھﺎ در ﺳﻲ ﺷﺎرپ :‬

‫١- ھﺮ ﺟﺎﻳﻲ ﺧﻮاﺳﺘﯿﺪ  ﺑﻪ ھﺮ دﻟﯿﻠﻲ ﺣﻠﻘﻪ را ﭘﺎﻳﺎن دھﯿﺪ ﻣﻲ ﺗﻮاﻧﯿـﺪ از دﺳـﺘﻮر ;‪ break‬اﺳـﺘﻔﺎده  ﻛﻨﯿـﺪ. در اﻳـﻦ‬ ‫ﺣﺎﻟﺖ ﺑﻪ ﺻﻮرت آﻧﻲ ﺣﻠﻘﻪ ﺧﺎﺗﻤﻪ ﻳﺎﻓﺘﻪ و ﻛﺪھﺎی اداﻣﻪ ی  ﺑﺮﻧﺎﻣﻪ ﭘﺲ از ﺣﻠﻘﻪ اﺟﺮا ﻣﻲ ﺷﻮﻧﺪ.‬
‫٢- ﻧﺤﻮه ی اﺳﺘﻔﺎده از دﺳﺘﻮر ‪ :  continue‬ﻓﺮض ﻛﻨﯿﺪ ﺣﻠﻘﻪ ی ﺷـﻤﺎ در راﻧـﺪ ۵١ ﺧـﻮدش اﺳـﺖ! ﺣـﺎﻻ در اﻳـﻦ ‫راﻧﺪ  ﺷﻤﺎ ﻣﻲ ﺧﻮاھﯿﺪ ﻳﻚ ﺳﺮی از دﺳﺘﻮرات درون ﺣﻠﻘﻪ اﺟﺮا ﻧﺸﻮﻧﺪ و ﺣﻠﻘﻪ ﺑﻪ راﻧﺪ  ﺑﻌﺪی ﻣﻨﺘﻘـﻞ ﺷـﺪه و‬ ‫ﻛﺎرش را اداﻣﻪ دھﺪ. اﻳﻨﺠﺎ اﺳﺖ ﻛﻪ از دﺳﺘﻮر ‪  continue‬اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد. ﺑﮫﺘﺮ اﺳﺖ ﺑﻪ ﻳﻚ ﻣﺜـﺎل ﺳـﺎده‬ ‫در اﻳﻦ زﻣﯿﻨﻪ ﺗﻮﺟﻪ  ﻛﻨﯿﻢ.
دو ﻣﻮرد ﺗﻜﻤﯿﻠﻲ در ﻣﻮرد ﺣﻠﻘﻪ ھﺎ در ﺳﻲ ﺷﺎرپ :‬

‫١- ھﺮ ﺟﺎﻳﻲ  ﺧﻮاﺳﺘﯿﺪ ﺑﻪ ھﺮ دﻟﯿﻠﻲ ﺣﻠﻘﻪ را ﭘﺎﻳﺎن دھﯿﺪ ﻣﻲ ﺗﻮاﻧﯿـﺪ از دﺳـﺘﻮر ;‪  break‬اﺳـﺘﻔﺎده ﻛﻨﯿـﺪ. در اﻳـﻦ‬ ‫ﺣﺎﻟﺖ ﺑﻪ ﺻﻮرت آﻧﻲ ﺣﻠﻘﻪ ﺧﺎﺗﻤﻪ ﻳﺎﻓﺘﻪ و  ﻛﺪھﺎی اداﻣﻪ ی ﺑﺮﻧﺎﻣﻪ ﭘﺲ از ﺣﻠﻘﻪ اﺟﺮا ﻣﻲ ﺷﻮﻧﺪ.‬
‫٢- ﻧﺤﻮه ی اﺳﺘﻔﺎده از  دﺳﺘﻮر ‪ : continue‬ﻓﺮض ﻛﻨﯿﺪ ﺣﻠﻘﻪ ی ﺷـﻤﺎ در راﻧـﺪ ۵١ ﺧـﻮدش اﺳـﺖ! ﺣـﺎﻻ در  اﻳـﻦ ‫راﻧﺪ ﺷﻤﺎ ﻣﻲ ﺧﻮاھﯿﺪ ﻳﻚ ﺳﺮی از دﺳﺘﻮرات درون ﺣﻠﻘﻪ اﺟﺮا ﻧﺸﻮﻧﺪ و ﺣﻠﻘﻪ  ﺑﻪ راﻧﺪ ﺑﻌﺪی ﻣﻨﺘﻘـﻞ ﺷـﺪه و‬ ‫ﻛﺎرش را اداﻣﻪ دھﺪ. اﻳﻨﺠﺎ اﺳﺖ ﻛﻪ از دﺳﺘﻮر ‪  continue‬اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد. ﺑﮫﺘﺮ اﺳﺖ ﺑﻪ ﻳﻚ ﻣﺜـﺎل ﺳـﺎده‬ ‫در اﻳﻦ زﻣﯿﻨﻪ ﺗﻮﺟﻪ  ﻛﻨﯿﻢ.‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬را در ‪  VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۱‬اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬ ‫ﺳﭙﺲ ﻛﺪ  زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬

‫;‪using System‬‬

‫‪namespace ex۱۱‬‬
‫}‬
class Class‬‬۱
‫}
‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
}‬
‫)‪Console.WriteLine‬‬
‫;( &quot;۵==‪&quot;for (int i = ۱; i &lt;= ۱۰۰; i++) -&gt; break at i‬‬
‫(++‪for (int i = ۱; i &lt;= ۱۰۰; i‬‬
‫}
‫(۵ == ‪if (i‬‬
‫;‪break‬‬
‫;(‪Console.WriteLine(i‬‬
{
‫;()‪Console.ReadLine‬‬
‫)‪Console.WriteLine‬‬
‫;( &quot;۹&lt;‪&quot;for (int i = ۱; i &lt;= ۱۰; i++) -&gt; continue if i‬‬
‫(++‪for (int i = ۱; i &lt;= ۱۰; i‬‬
‫}
‫(۹ &lt; ‪if (i‬‬
‫;‪continue‬‬
‫;(‪Console.WriteLine(i‬‬
{
‫;()‪Console.ReadLine‬‬
‫{
‫{‬
‫{‬



‫ﻣﻮارد ﺗﻜﻤﯿﻠﻲ ﻣﺮﺑﻮط ﺑﻪ رد و ﺑﺪل ﻛﺮدن ﻣﻘﺎدﻳﺮ ﺑﻪ/از ﻛﻼس ھﺎ :‬

‫در  ﻗﺴﻤﺖ ﺑﻌﺪی ﻣﻲ ﺧﻮاھﯿﻢ ﺧﺎﺻﯿﺘﻲ را ﺗﻌﺮﻳـﻒ ﻛﻨـﯿﻢ ﻛـﻪ ﻳـﻚ ﻣﻘـﺪار را از ﻛـﺎرﺑﺮ  ﻣـﻲ ﮔﯿـﺮد و در ﺑﺮﻧﺎﻣـﻪ ﻣـﻲ ﺗـﻮان‬ ‫ﺗﻮﺳﻂ ﻗﺴﻤﺖ ھﺎی دﻳﮕﺮ از آن اﺳﺘﻔﺎده  ﻛﺮد.‬
‫اﺑﺘﺪا ﻳﻚ ﻣﺘﻐﯿﺮ ﻋﻤﻮﻣﻲ ﺑﺎﻳﺪ در ﺳﻄﺢ ﻛﻼس ﺗﻌﺮﻳﻒ ﻛﺮد ﺗﺎ ﻣﻘﺪار درﻳﺎﻓﺖ  ﺷﺪه ﺗﻮﺳﻂ ‪ set‬را در ﺧﻮد ﻧﮕـﺎه داری ﻛﻨـﺪ‬ ‫( در ﻣﻮرد ‪ scope‬ﻣﺘﻐﯿﺮھﺎ )  ﻣﺘﻐﯿﺮھﺎی ﻋﻤﻮﻣﻲ و ﻣﺤﻠﻲ و اﻣﺜﺎل اﻳﻨﮫﺎ ( در ھﻨﮕﺎم ﻣﻌﺮﻓـﻲ ﺗﻮاﺑـﻊ ﺑﯿـﺸﺘﺮ ﺑﺤـﺚ  ﺧﻮاھـﺪ‬
‫ﺷﺪ ) . ﺳﭙﺲ از ﻃﺮﻳﻖ ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪ value‬ ﻣﻘـﺪار درﻳﺎﻓـﺖ ﺷـﺪه ﺑـﻪ ﻣﺘﻐﯿـﺮ اﻧﺘـﺴﺎب ﻣـﻲ ﻳﺎﺑـﺪ و ﭼـﻮن در ﺳـﻄﺢ‬
‫ﻛﻼس ﻋﻤﻮﻣﻲ اﺳﺖ در ﺗﻤﺎم ﻛﻼس ﻗﺎﺑﻞ درﺳﺘﺮﺳﻲ اﺳﺖ.‬
ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و  ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ex۱۲‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬ ‫ﺳﭙﺲ از ﻣﻨﻮی ﭘﺮوژه ﻳﻚ ﻛﻼس  ﺟﺪﻳﺪ ﺑﻪ آن اﺿﺎﻓﻪ ﻧﻤﺎﻳﯿﺪ ( ﺑﻪ ﻧﺎم ‪ ( clsDate‬ و ﻛﺪ زﻳﺮ را درون آن  ﺑﻨﻮﻳﺴﯿﺪ :‬
&nbsp;
‫;‪using System‬‬

‫‪namespace ex۱۲‬‬
‫}‬
‫‪public class clsDate‬‬
‫}
‫;‪private int Year‬‬

‫
()‪public clsDate‬‬
‫}‬
‫{‬

‫‪public int setYear‬‬
‫}
‫‪set‬‬
}‬
‫;‪Year = value‬‬
{‬
{

‫‪public bool IsLeapYear‬‬
{
‫‪get‬‬
‫}‬
‫;(‪return System.DateTime.IsLeapYear(Year‬‬
{‬
‫{‬


{
‫{

‫ﺑﺮای اﺳﺘﻔﺎده از آن در ﻣﺘﺪ ‪ main‬ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻲ ﻛﻨﯿﻢ:‬
&nbsp;
‫;‪using System‬‬

‫‪namespace ex۱۲‬‬
‫}
‪class Class۱‬‬
‫}
[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
}‬
‫;()‪clsDate m_var = new clsDate‬‬

‫;۱۹۹۰ = ‪m_var.setYear‬‬

‫(‪if (m_var.IsLeapYear‬‬
‫;(&quot;.‪Console.WriteLine(&quot;۱۹۹۰ is a leap year‬‬
‫‪else‬‬
‫;(&quot;.‪Console.WriteLine(&quot;۱۹۹۰ is not a leap year‬‬

‫;()‪Console.ReadLine‬‬
{‬
‫{‬
‫{‬


‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق:‬

‫۱  - ﻧﺤﻮه ی ﺗﻌﺮﻳﻒ ﻣﺘﻐﯿﺮ از ﻳﻚ ﻛﻼس ﺟﺰو اﺳﺎﺳﻲ ﺗﺮﻳﻦ ﻗﺴﻤﺖ ھﺎی ﻛﺎر ﺑﺎ ﻳـﻚ ﻛـﻼس  ﻣﺤـﺴﻮب ﻣـﻲ ﺷـﻮد‬ ‫ﻛﻪ در ﻗﺴﻤﺖ ھﺎی ﭘﯿﺸﯿﻦ ﻧﯿﺰ ﻣﻌﺮﻓﻲ ﮔﺮدﻳﺪ.
‫ ۲ -‬‬  ‫ھﻨﮕﺎﻣﻲ ﻛﻪ از ‪ if‬ اﺳﺘﻔﺎده ﻣﻲ ﻛﻨﯿﻢ ﻟﺰوﻣﻲ ﻧﺪارد ﺣﺘﻤﺎ ﺑﻨﻮﻳﺴﯿﻢ ‪ .  m_var.IsLeapYear==true‬ھﻤﯿﻦ ﻛـﻪ اﻳﻦ ﺧﺎﺻﯿﺖ ذﻛﺮ ﻣﻲ ﺷﻮد در وھﻠﻪ ی اول ‪  true‬ﺑﻮدن آن ﭼﻚ ﺧﻮاھﺪ ﺷﺪ.‬
‫۳ -‬ ‫ﻧﺤﻮه ی ﻣﻘﺪار دھﻲ ﺑﻪ ﻳﻚ ﺧﺎﺻﯿﺖ را  ھﻢ در ﻛﺪ ﻓﻮق ﻣﻼﺣﻈﻪ ﻣﻲ ﻧﻤﺎﻳﯿﺪ. در ھﻨﮕـﺎم اﺳـﺘﻔﺎده از ﺧﺎﺻـﯿﺖ ھﺎ ﻧﯿﺎزی ﺑﻪ  آوردن ﭘﺮاﻧﺘﺰھﺎ () در ﻣﻘﺎﺑﻞ ﻧﺎم آﻧﮫﺎ وﺟﻮد ﻧﺪارد.‬
‫۴ -‬ ‫ﺑﺮای ﻣﺮور ،  ﻧﺤﻮه ی ﻣﻌﺮﻓﻲ ﺧﺎﺻﯿﺖ ھﺎ ﺑﺎ ‪ get‬ﻧﯿﺰ ﺑﯿﺎن ﮔﺮدﻳﺪ. ﺑﺎ اﺳﺘﻔﺎده از ‪ set‬ و ‪  get‬ﻣﻲ ﺗﻮان ﺑﻪ ﻛـﻼس ‫ھﺎ ، ﻣﻘﺎدﻳﺮ ﻣﺘﻐﯿﺮھﺎ را ﭘﺎس ﻛﺮد و ﻳﺎ ﻣﻘﺪاری را  درﻳﺎﻓﺖ ﻧﻤﻮد.‬]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


<item>
<title>درس ششم</title>
<link>https://mhdsoft.loxblog.com/درس-ششم</link>
<guid>https://mhdsoft.loxblog.com/درس-ششم</guid>

<description><![CDATA[
ﺣﻠﻘﻪ ھﺎ در ﺳﻲ ﺷﺎرپ :‬

‫ﻣﻘﺪﻣﻪ :‬

‫اﮔﺮ ﻧﯿﺎز ﺑﺎﺷﺪ ﺗﺎ ﻗﻄﻌﻪ  ای از ﻛﺪ ﺑﯿﺶ از ﻳﻜﺒﺎر اﺟﺮا ﺷﻮد ﻧﯿﺎز ﺑﻪ اﺳﺘﻔﺎده از ﺣﻠﻘـﻪ ھـﺎ ﻣـﻲ ﺑﺎﺷـﺪ.  ﺑـﺮای ﻣﺜـﺎل ﻓـﺮض ‫ﻛﻨﯿﺪ آراﻳﻪ ای ﺑﻪ ﻃﻮل ۱۰۰۰ ﺗﻌﺮﻳﻒ ﻛﺮده اﻳﺪ. اﻛﻨﻮن ﻣﻲ  ﺧﻮاھﯿﺪ آﻧﺮا ﺑﺎ ھﺰار ﻋﺪد ﻣﺘﻮاﻟﻲ ﭘﺮﻛﻨﯿـﺪ. ﺑـﺪﻳﮫﻲ اﺳـﺖ ﻛـﻪ‬ ‫روش زﻳﺮ ﻛﺎرآﻣﺪ  ﻧﯿﺴﺖ! :‬
‫;[۱۰۰۰]‪int[] intData = new int‬‬
‫;۰=[۰]‪intData‬‬
‫.‬
.‬
.‬
;۹۹۹=[۹۹۹]‪intData‬‬
&nbsp;
ﺣﻠﻘﻪ ھﺎ در ﺳﻲ ﺷﺎرپ :‬

‫ﻣﻘﺪﻣﻪ :‬

‫اﮔﺮ ﻧﯿﺎز ﺑﺎﺷﺪ ﺗﺎ ﻗﻄﻌﻪ  ای از ﻛﺪ ﺑﯿﺶ از ﻳﻜﺒﺎر اﺟﺮا ﺷﻮد ﻧﯿﺎز ﺑﻪ اﺳﺘﻔﺎده از ﺣﻠﻘـﻪ ھـﺎ ﻣـﻲ ﺑﺎﺷـﺪ.  ﺑـﺮای ﻣﺜـﺎل ﻓـﺮض ‫ﻛﻨﯿﺪ آراﻳﻪ ای ﺑﻪ ﻃﻮل ۱۰۰۰ ﺗﻌﺮﻳﻒ ﻛﺮده اﻳﺪ. اﻛﻨﻮن ﻣﻲ  ﺧﻮاھﯿﺪ آﻧﺮا ﺑﺎ ھﺰار ﻋﺪد ﻣﺘﻮاﻟﻲ ﭘﺮﻛﻨﯿـﺪ. ﺑـﺪﻳﮫﻲ اﺳـﺖ ﻛـﻪ‬ ‫روش زﻳﺮ ﻛﺎرآﻣﺪ  ﻧﯿﺴﺖ! :‬
‫;[۱۰۰۰]‪int[] intData = new int‬‬
‫;۰=[۰]‪intData‬‬
‫.‬
.‬
.‬
;۹۹۹=[۹۹۹]‪intData‬‬

‫ﻧﻮﺷﺘﻦ  اﻳﻦ ﺧﻄﻮط ﻣﺘﻮاﻟﻲ اﺣﺘﻤﺎﻻ ﺑﺎ ﻛﭙﻲ و ﭘﯿﺴﺖ و اﺻﻼح آن ﺣﺪاﻗﻞ ﻧﯿﻢ ﺳﺎﻋﺖ ﻃﻮل ﻣﻲ  ﻛﺸﺪ! ﺑﻨﺎﺑﺮاﻳﻦ ﻧﯿـﺎز ﺑـﻪ‬ ‫وﺳﯿﻠﻪ ای ﺣﺲ ﻣﻲ ﺷﻮد ﻛﻪ ﺑﺘﻮان ﺑﻮﺳﯿﻠﻪ ی آن اﻣﺜﺎل  اﻳﻨﮕﻮﻧﻪ ﻛﺎرھﺎ را اﻧﺠﺎم داد.‬

‫ﺗﻌﺮﻳﻒ ﺣﻠﻘﻪ ھﺎ و اﺳﺘﻔﺎده از آﻧﮫﺎ :‬

‫ﺑﺮای  ﺗﻌﺮﻳﻒ ﺣﻠﻘﻪ ھـﺎ اﺑﺰارھـﺎی ﻣﺘﻌـﺪدی ﻣﺎﻧﻨـﺪ ‪ while, do , for , foreach‬  وﺟـﻮد دارﻧـﺪ. اﺳـﺘﻔﺎده و اﻧﺘﺨـﺎب آﻧﮫـﺎ‬ ‫ﺑﺴﺘﮕﻲ ﺑﻪ ﺳﻠﯿﻘﻪ ی ﺷﻤﺎ و ﻣﻨﻄﻖ  ﺑﺮﻧﺎﻣﻪ دارد. در ھﺮ ﺣﺎل ﻳﻚ ﻣﺴﺎﻟﻪ ﺑـﺪﻳﮫﻲ اﺳـﺖ ﻛـﻪ ھﻤـﻮاره ﺑـﯿﺶ از ﻳـﻚ راه  ‫ﺣﻞ ﺑﺮای ﻳﻚ ﻣﺴﺎﻟﻪ وﺟﻮد ﺧﻮاھﺪ داﺷﺖ.‬


‫اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ی ‪: for‬‬

ﻋﻤﻮﻣﺎ ﻛﺪﻧﻮﻳﺴﻲ را ﺑﺎ ﻛﺪ ﻧﻮﻳﺴﻲ ﻣﻲ ﺗﻮان آﻣﻮﺧﺖ! ﺑﻨﺎﺑﺮاﻳﻦ در ﻣﻮرد اﻧﻮاع ﺣﻠﻘﻪ ھﺎ ﻣﺜﺎﻟﮫﺎﻳﻲ اراﺋﻪ ﺧﻮاھﺪ ﮔﺮدﻳﺪ.‬

‫ﻳﻚ ﺑﺮﻧﺎﻣﻪ ی ﺳﻲ ﺷﺎرپ ﺟﺪﻳﺪ ‪ console‬را در ‪ VS.NET‬ﺑﺎز ﻛﻨﯿﺪ و ﻧﺎم آﻧـﺮا دراﺑﺘـﺪا ex۷۰ ‬اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ. ﺳـﭙﺲ ﻛـﺪ‬
‫زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬
‫;‪using System‬‬

‫‪namespace ex۷۰‬‬
‫}‬
‫‪class Class۱‬‬
}‬
‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
}‬
‫;[۰۰۰۱]‪int[] intData = new int‬‬
‫( ++‪for ( int i=۰ ; i&lt;۱۰۰۰ ; i‬‬
‫;‪intData[i]=i‬‬
‫(++‪for(int i=۰ ; i&lt; intData.Length ; i‬‬
}‬
‫;[‪int j = intData[i‬‬
‫;(‪Console.WriteLine(&quot;intData[&quot; + i + &quot;]=&quot; + j‬‬
‫{‬
‫;()‪Console.ReadLine‬‬
{‬
{‬
‫{‬

‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١-  ﺑﺮای ﺗﻌﺮﻳﻒ ﺣﻠﻘﻪ ی ‪ for‬ ھﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻲ ﺑﯿﻨﯿﺪ ﺑﺎﻳﺪ ﺗﻌﺪاد ﺑﺎر اﺟـﺮای  ﺣﻠﻘـﻪ ( اﻳﻨﺠـﺎ از ۰ ﺗـﺎ ۹۹۹ اﺳـﺖ ) و‬ ‫ھﻤﭽﻨﯿﻦ ﻧﺤﻮه ی رﺳﯿﺪن از ۰ ﺑﻪ ۰۰۰۱  را ﻣﺸﺨﺺ ﻛﺮد ( در اﻳﻨﺠﺎ ++‪ i‬اﺳـﺖ ﻳﻌﻨـﻲ ھـﺮ ﺑـﺎر ﻳـﻚ واﺣـﺪ ﺑـﻪ ‫ﺷﻤﺎرﺷﮕﺮ  ﺣﻠﻘﻪ اﺿﺎﻓﻪ ﻣﻲ ﺷﻮد. )‬
‫٢- در زﺑﺎن ﺳﻲ ++‪ i‬ﻳﻌﻨﻲ ۱+‪ i=i‬و --‪ i‬ﻳﻌﻨﻲ  ۱-‪ i=i‬و ﻛـﻼ ‪ i-=n‬ ﻳﻌﻨـﻲ ‪ i=i-n‬ و ﺑـﻪ ھﻤـﯿﻦ ﺗﺮﺗﯿـﺐ. ﺑـﺮای ﻣﺜـﺎل ‫‪  i*=n‬ ﻳﻌﻨﻲ ‪ i=i*n‬ و ‪ i+=n‬ ﻳﻌﻨﻲ ‪ i=i+n‬ و ...‬
‫٣- اﮔﺮ ﭘﺲ از ﺣﻠﻘﻪ  ی ‪ for‬ ﻳﻚ ﺧﻂ ﻛﺪ داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﻧﯿﺎزی ﺑﻪ آﻛﻮﻻد ﻧﯿﺴﺖ ( ﻣﺎﻧﻨﺪ ﻗﺴﻤﺖ اول ﻛﺪ  ). وﻟﻲ اﮔـﺮ‬ ‫ﺗﻌﺪاد ﺧﻄﻮط ﻣﺮﺑﻮط ﺑﻪ ﺑﺪﻧﻪ ی ‪ for‬ زﻳﺎد ﺑﻮد ﺑﺎﻳﺪ ﺣﺘﻤﺎ از  آﻛﻮﻻد اﺳﺘﻔﺎده ﺷﻮد ( ﻣﺎﻧﻨﺪ ﻗﺴﻤﺖ دوم ﻛﺪ ). ( اﻳـﻦ‬ ‫ﻗﺎﻋﺪه ای ﻛﻠﻲ اﺳﺖ در  زﺑﺎﻧﮫﺎی ﻣﺸﺘﻖ ﺷﺪه از زﺑﺎن ﺳﻲ در ﻣﻮرد ھﺮ ﭼﯿﺰی! )‬
‫۴- ﻓﺮض ﻛﻨﯿﺪ در ﻗﺴﻤﺖ  اول ﻛﺪ ﺑﺎﻻ ﺑﺠﺎی ۱۰۰۰ ﻣﻲ ﻧﻮﺷﺘﯿﺪ ۱۰۰۱ . ﺳﺮﻳﻌﺎ ﺑﺎ ﻳﻚ ﺧﻄﺎی زﻣـﺎن اﺟـﺮا  ﻣﻮاﺟـﻪ‬ ‫ﻣﻲ ﺷﺪﻳﺪ. زﻳﺮا ﻣﻲ ﺧﻮاﺳﺘﯿﺪ ﺑﻪ ﻋﻀﻮی از آراﻳﻪ دﺳﺘﺮﺳﻲ ﭘﯿﺪا ﻛﻨﯿـﺪ ﻛـﻪ  ﺗﻌﺮﻳـﻒ ﻧـﺸﺪه اﺳـﺖ. راه ﻣـﺪرن ‫ﭼﻚ ﻛﺮدن اﻳﻦ ﻣﺴﺎﺋﻞ اﺳﺘﻔﺎده از ﺧﺎﺻﯿﺖ ‪  Length‬آراﻳﻪ اﺳﺖ ﻛﻪ در ﻗﺴﻤﺖ دوم ﻛـﺪ در ﻋﻤـﻞ ﻣـﺸﺎھﺪه ‫ﻣﻲ ﻧﻤﺎﻳﯿﺪ. ھﻤﯿﺸﻪ از  اﻳﻦ روش اﺳﺘﻔﺎده ﻛﻨﯿﺪ.‬
‫۵- ﺣﻠﻘﻪ ی اول ﻳﻌﻨﻲ اﻳﻨﻜﻪ ﻛﺎر ﭘﺮ ﻛﺮدن آراﻳﻪ ‪ intData‬ را از ﺻﻔﺮ ﺗﺎ ۹۹۹ ﻳﻜﻲ ﻳﻜﻲ ( ++‪ ( i‬اﻧﺠﺎم ﺑﺪه.‬
‫اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ی ‪: while‬‬


‫ﻳﻚ ﺑﺮﻧﺎﻣﻪ ی ﺳﻲ ﺷﺎرپ ﺟﺪﻳﺪ ‪ console‬را در ‪ VS.NET‬ ﺑﺎز ﻛﻨﯿﺪ و ﻧﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۸۰ ‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ. ﺳـﭙﺲ ﻛـﺪ‬
زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬
‫;‪using System‬‬

‫‪namespace ex۸۰‬‬
‫}‬
‫‪class Class۱‬‬
‫}‬
‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
}‬
‫;۱ = ‪int n‬‬

‫(۶ &lt; ‪while (n‬‬
}‬
‫;(‪Console.WriteLine(&quot;Current value of n is {۰}&quot;, n‬‬
‫;++‪n‬‬
‫{‬

‫;()‪Console.ReadLine‬‬
{‬
‫{
‫{‬


‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١-  ﺣﻠﻘﻪ ی ‪ while‬ در ﺑﺎﻻ ﻛﺎر اﻧﺠﺎم ﺣﻠﻘﻪ را ﺗﺎ ھﻨﮕـﺎﻣﻲ اﻧﺠـﺎم ﻣـﻲ دھـﺪ ﻛـﻪ  ﺷـﺮط ذﻛـﺮ ﺷـﺪه در اﺑﺘـﺪای آن‬ ‫ﺻﺎدق و ﺑﺮﻗﺮار ﺑﺎﺷﺪ. ﻳﻌﻨﻲ در ﺣﻠﻘﻪ ی ﻓﻮق  ﺗﺎ وﻗﺘﻲ ۶&lt;‪ n‬اﺳﺖ اﻳﻦ ﺣﻠﻘﻪ اداﻣﻪ ﺧﻮاھﺪ ﻳﺎﻓﺖ.‬
‫٢- ﺣﻠﻘﻪ ی ‪ while‬ ﺻﻔﺮ ﻳﺎ ﺑﯿﺸﺘﺮ ﺑﺎر ﻣﻤﻜﻦ اﺳﺖ اﺟﺮا ﺷﻮد.‬
‫٣-  در ﻛﺪ ﻓﻮق از {۰} اﺳﺘﻔﺎده ﮔﺮدﻳﺪه اﺳﺖ. ﻣﺘﺪ ‪ WriteLine‬ﺑﻪ ﺷﻤﺎ اﻳﻦ اﺟﺎزه  را ﻣﻲ دھﺪ ﻛـﻪ ‪ n‬ﺗـﺎ آرﮔﻮﻣـﺎن ‫ﺑﺮای آن ﺗﻌﺮﻳﻒ ﻛﻨﯿﺪ و ﻣﻘﺎدﻳﺮ ھﺮ ﻛﺪام را  ﻛﻪ ﺧﻮاﺳﺘﯿﺪ در ﻛـﺪ ﻧﻤـﺎﻳﺶ دھﯿـﺪ از {‪ {x‬اﺳـﺘﻔﺎده ﻛﻨﯿـﺪ. در اﻳـﻦ ﻣﻮرد  ﻣﻘﺪار آرﮔﻮﻣﺎن ‪ x‬ام ﻧﻤﺎﻳﺶ داده ﻣﻲ ﺷﻮد.‬
اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ی ‪: do‬‬

‫ﻳﻚ ﺑﺮﻧﺎﻣﻪ ی ﺳﻲ ﺷﺎرپ ﺟﺪﻳﺪ ‪ console‬را در ‪ VS.NET‬ﺑﺎز ﻛﻨﯿﺪ و ﻧﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۹۰‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ. ﺳـﭙﺲ ﻛـﺪ‬
‫زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬
&nbsp;
‫;‪using System‬‬

‫‪namespace ex۹۰‬‬
‫}‬

‫‪class Class۱‬‬
‫}‬
‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}‬
‫;‪int x‬‬
‫;۰ = ‪int y‬‬

‫‪do‬‬
‫}‬
‫;++‪x = y‬‬
‫;(‪Console.WriteLine(x‬‬

‫;(۵ &lt; ‪}while(y‬‬

‫;()‪Console.ReadLine‬‬

{‬
{‬
‫{

‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١- اﻳﻦ ﺣﻠﻘﻪ ﺑﻪ ﺣﻠﻘﻪ ی ‪ do&hellip;while‬ﻣﻌﺮوف اﺳﺖ و ھﺮ دو ﺟﺰء آن ﺑﺎﻳﺪ ذﻛﺮ ﮔﺮدد.‬
‫٢- اﻳﻦ ﺣﻠﻘﻪ ﺗﺎ زﻣﺎﻧﻲ ﻛﻪ ﺷﺮط ذﻛﺮ ﺷﺪه در ﻗﻤﺴﺖ ‪ while‬ﺻﺤﯿﺢ اﺳﺖ اداﻣﻪ ﻣﻲ ﻳﺎﺑﺪ.‬
‫٣- اﻳﻦ ﺣﻠﻘﻪ در اﺑﺘﺪای ﻛﺎر ﺑﺪون ﺗﻮﺟﻪ ﺑﻪ ﻗﺴﻤﺖ ‪ while‬ ﺣﺪاﻗﻞ ﻳﻜﺒﺎر اﺟﺮا ﻣﻲ ﺷﻮد. ( ﻣﺜﺎل زﻳﺮ را اﺟﺮا ﻧﻤﺎﻳﯿﺪ )‬
‫;۰۱ = ‪int n‬‬
‫‪do‬‬
}‬
‫;(‪Console.WriteLine(&quot;Current value of n is {۰}&quot;, n‬‬
‫;++‪n‬‬
‫;(۶ &lt; ‪} while (n‬‬




‫اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ی ‪: foreach‬‬

‫ﻳﻚ  ﺑﺮﻧﺎﻣﻪ ی ﺳﻲ ﺷﺎرپ ﺟﺪﻳﺪ ‪ console‬ را در ‪ VS.NET‬ﺑﺎز ﻛﻨﯿﺪ و ﻧﺎم آﻧـﺮا  دراﺑﺘـﺪا ‪ ex۱۰‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ. ﺳـﭙﺲ ﻛـﺪ‬ ‫زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬
‫;‪using System‬‬

‫‪namespace ex۱۰‬‬
‫}‬
‫‪class Class۱‬‬
‫}
[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}‬
‫;۰ = ‪int odd = ۰, even‬‬
‫;{۱۱,۸,۷,۵,۲,۱,۰} [] ‪int[] arr = new int‬‬

‫(‪foreach (int i in arr‬‬
‫}‬
(۰ == ۲%‪if (i‬‬
‫;++‪even‬‬
‫‪else‬‬
‫;++‪odd‬‬
{‬

‫)‪Console.WriteLine‬‬
‫,&quot;.‪&quot;Found {۰} Odd Numbers, and {۱} Even Numbers‬‬
‫; (‪odd, even‬‬

‫;()‪Console.ReadLine‬‬

{‬
{‬
‫{‬
‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١-  از ‪ foreach‬ ﺑﺮای ﺣﺮﻛﺖ در ﺑﯿﻦ اﻋﻀﺎی ﻳﻚ آراﻳﻪ (ﻣﺎﻧﻨﺪ ﻣﺜﺎل ﺑﺎﻻ) و ﻳﺎ  ﻣﺠﻤﻮﻋﻪ اﻳﻲ از اﺷﯿﺎء اﺳـﺘﻔﺎده ﻣـﻲ ﺷﻮد (روﺷﻲ ﺷﻜﯿﻞ ، ﻣﺪرن و ﻣﻄﻤﺌﻦ! و ﺗﻘﺮﻳﺒﺎ  ﺑﻪ ارث رﺳﯿﺪه از وﻳﮋوال ﺑﯿﺴﯿﻚ!! ).‬
‫٢- در زﺑﺎﻧﮫﺎی ﻣﺸﺘﻖ ﺷﺪه از ‪ ، C‬ﻋﻤﻠﮕﺮ % ، ﺑﺎﻗﯿﻤﺎﻧﺪه را ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﻛﻨﺪ.‬
‫٣-  در ﻛﺪ ﻓﻮق ﺑﺎ اﺳﺘﻔﺎده از ﺣﻠﻘﻪ ی ‪ foreach‬ﺗﻚ ﺗﻚ اﻋﻀﺎی آراﻳﻪ در ﻣﻮرد زوج و  ﻳﺎ ﻓـﺮد ﺑﻮدﻧـﺪ ﻣـﻮرد ﺑﺮرﺳـﻲ‬ ‫ﻗﺮار ﮔﺮﻓﺘﻪ اﻧﺪ و ﺗﻌﺪاد اﻋﻀﺎی زوج و ﻓﺮد در  آﺧﺮ ﻧﻤﺎﻳﺶ داده ﻣﻲ ﺷﻮد.‬]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


<item>
<title>درس پنجم</title>
<link>https://mhdsoft.loxblog.com/درس-پنجم</link>
<guid>https://mhdsoft.loxblog.com/درس-پنجم</guid>

<description><![CDATA[
آراﻳﻪ ھﺎ در ﺳﻲ ﺷﺎرپ :‬

‫ھﻨﮕﺎﻣﻲ آراﻳﻪ ھﺎ اﻳﺠﺎد ﻣﻲ ﺷﻮﻧﺪ ﻛﻪ ﺑﺨﻮاھﯿﻢ  ﺑﺎ ﻣﺠﻤﻮﻋﻪ ای از اﻃﻼﻋـﺎت ھﻤﺠـﻨﺲ ﻛـﺎر ﻛﻨـﯿﻢ. ﺑـﺮای ﻧﻤﻮﻧـﻪ از ﻳـﻚ‬ ‫آراﻳﻪ  ﺑﺮای ذﺧﯿﺮه ﺗﻌﺪادی ﻛﺎراﻛﺘﺮ ﻣﻲ ﺧﻮاھﯿﻢ اﺳﺘﻔﺎده ﻧﻤﺎﻳﯿﻢ. آراﻳﻪ ھﺎ ھﻢ ﻳﻚ ﻧﻮع  ﻣﺘﻐﯿﺮ ھﺴﺘﻨﺪ ﭘﺲ ﺑﺎﻳﺪ ﺗﻌﺮﻳﻒ و ‫ﻣﻘﺪار دھﻲ اوﻟﯿﻪ ﺷﻮﻧﺪ ، ﻧﻮع و ﺗﻌﺪاد اﻋﻀﺎی  آﻧﮫﺎ ﻧﯿﺰ ﺑﺎﻳﺪ ﻣﻌﯿﻦ ﮔﺮدد.‬
آراﻳﻪ ھﺎ در ﺳﻲ ﺷﺎرپ :‬

‫ھﻨﮕﺎﻣﻲ آراﻳﻪ ھﺎ اﻳﺠﺎد ﻣﻲ ﺷﻮﻧﺪ ﻛﻪ  ﺑﺨﻮاھﯿﻢ ﺑﺎ ﻣﺠﻤﻮﻋﻪ ای از اﻃﻼﻋـﺎت ھﻤﺠـﻨﺲ ﻛـﺎر ﻛﻨـﯿﻢ. ﺑـﺮای ﻧﻤﻮﻧـﻪ از ﻳـﻚ‬  ‫آراﻳﻪ ﺑﺮای ذﺧﯿﺮه ﺗﻌﺪادی ﻛﺎراﻛﺘﺮ ﻣﻲ ﺧﻮاھﯿﻢ اﺳﺘﻔﺎده ﻧﻤﺎﻳﯿﻢ. آراﻳﻪ ھﺎ ھﻢ  ﻳﻚ ﻧﻮع ﻣﺘﻐﯿﺮ ھﺴﺘﻨﺪ ﭘﺲ ﺑﺎﻳﺪ ﺗﻌﺮﻳﻒ و ‫ﻣﻘﺪار دھﻲ اوﻟﯿﻪ ﺷﻮﻧﺪ ، ﻧﻮع و ﺗﻌﺪاد  اﻋﻀﺎی آﻧﮫﺎ ﻧﯿﺰ ﺑﺎﻳﺪ ﻣﻌﯿﻦ ﮔﺮدد.‬
‫ﻓﺮض ﻛﻨﯿﺪ ده داده ی ھﻢ ﺟﻨﺲ دارﻳﻢ (  ﺑﺮای ﻣﺜﺎل رﺷـﺘﻪ (‪ ( (string‬و ﻣـﻲ ﺧـﻮاھﯿﻢ آﻧﮫـﺎ را ذﺧﯿـﺮه ﻛﻨـﯿﻢ. ﻳـﺎ  ﻣـﻲ ‫ﺗﻮان ده ﻣﺘﻐﯿﺮ ﻣﺨﺘﻠﻒ را ﺗﻌﺮﻳﻒ ﻛﺮد و ﺳﭙﺲ ﺗﻚ ﺗﻚ آﻧﮫﺎ را ﻣﻘﺪار دھﻲ ﻧﻤﻮد  و ﻳﺎ ﻳﻚ آراﻳﻪ ﺗﻌﺮﻳـﻒ ﻧﻤـﻮد و ﺳـﭙﺲ در‬ ‫ﺧﺎﻧﻪ ھﺎی ﻣﺨﺘﻠﻒ آن اﻳﻦ ده ﻋﻀﻮ را  ﭼﯿﺪ. اﻳﻦ ﻣﻄﻠﺐ زﻣﺎﻧﻲ ﺣﺎﺋﺰ اھﻤﯿﺖ ﻣـﻲ ﺷـﻮد ﻛـﻪ داده ھـﺎی ھﻤﺠـﻨﺲ و ﺑـﻪ ‫ﻧﻮﻋﻲ  ﻣﺮﺗﺒﻂ ﻣﺎ ﺗﻌﺪاد زﻳﺎدی داﺷﺘﻪ ﺑﺎﺷﻨﺪ.‬

ﺑﺮای ﺗﻌﺮﻳﻒ آراﻳﻪ ﭼﻨﺪﻳﻦ راه ﻣﺨﺘﻠﻒ وﺟﻮد دارد :‬

‫ﺑﺮای  ﺗﻌﺮﻳﻒ آراﻳﻪ اﺑﺘﺪا ﻧﻮع آﻧﺮا ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﯿﺪ ﺳﭙﺲ [] را ﺑﺎﻳﺪ ﺟﻠﻮی ﺗﻌﺮﻳﻒ ﻧﻮع  ﺑﮕﺬارﻳﺪ اﻳﻦ دﺳﺘﻮر زﺑﺎن اﺳﺖ ‫و ﭼﻮن ﭼﺮا ﻧﺪارد! در زﺑﺎن ﺳﻲ ﻛﻤﻲ ﻣﺘﻔﺎوت ﺑﻮد.  اﻳﻦ ﻛﺮوﺷﻪ ھﺎ ﺑﻌﺪ از ﻧﺎم ﻣﺘﻐﯿﺮ ﻣﻲ آﻣﺪﻧﺪ. و ﺳﭙﺲ در اﻳﻨﺠﺎ ﻧﺎم ‫ﻳﻚ ﻣﺘﻐﯿﺮ را  ﻛﻪ ﺑﻌﺪا ﺑﻪ آن ارﺟﺎ ﻣﻲ دھﯿﻢ ﺧﻮاھﯿﺪ ﮔﺬاﺷﺖ. ﺑﺮای ﻣﺜﺎل‬
‫;[]‪int[] table; // not int table‬‬

‫ﺣﺪ ﭘﺎﻳﯿﻦ آراﻳﻪ ﺻﻔﺮ ﺑﻮده ﺑﺮای ﻣﺜﺎل اﮔﺮ آراﻳﻪ []‪ chrData‬ده ﻋﻀﻮ داﺷﺘﻪ ﺑﺎﺷﺪ، اوﻟﯿﻦ ﻋـﻀﻮ آن [۰]‪ chrData‬و آﺧـﺮﻳﻦ‬
‫ﻋﻀﻮ آن [۹]‪ chrData‬اﺳﺖ.‬

‫ﻣﻄﻠﺐ  دﻳﮕﺮی ﻛﻪ در ﻣﻮرد آراﻳﻪ ھﺎ ﺧﯿﻠﻲ ﻣﮫﻢ اﺳﺖ اﻧﺪازه ی آن اﺳﺖ. ﻳﻌﻨﻲ ﻳﻚ آراﻳﻪ  ﺣﺎوی ﭼﻨﺪ ﺧﺎﻧﻪ ی ﺧﺎﻟﻲ‬ ‫اﺳﺖ ﻛﻪ ﻣﺎ اﺟﺎزه دارﻳﻢ آﻧﺮا ﭘﺮ ﻛﻨﯿﻢ. ﻣﺜﺎل :‬
int[] numbers; // declare numbers as an int array of any size
numbers = new int[۱۰]; // numbers is a ۱۰-element array
numbers = new int[۲۰]; // now it's a ۲۰-element array


ﺗﻌﺮﻳﻒ آراﻳﻪ ای از رﺷﺘﻪ ھﺎ و ﻣﻘﺪار دھﯽ اوﻟﯿﻪ آن‬
String[] strData = new string[۲];
ﺗﻌﺮﻳﻒ و ﻣﻘﺪار دھﻲ اوﻟﯿﻪ‬
string [] strData = { &quot;۱۲۳۴&quot;,&quot;abcd&quot; };

‫ﻛﻪ آراﻳﻪ ای از ﻧﻮع رﺷﺘﻪ ای ﺑﻪ ﻃﻮل ٢ ﻋﻀﻮ ﺑﺎ ﻣﻘﺪار دھﻲ اوﻟﯿﻪ اﻳﺠﺎد ﺷﺪه اﺳﺖ. در اﻳـﻦ ﺣﺎﻟـﺖ ﻧﯿـﺎزی ﺑـﻪ ﺗﻌﯿـﯿﻦ‬
ﻃﻮل آن ﻧﻤﻲ ﺑﺎﺷﺪ.‬
روﺷﻲ دﻳﮕﺮ ﺑﺮای ﻣﻘﺪار دھﻲ اوﻟﯿﻪ‬
strData[۰] = &quot;۱۲۳۴&quot;;
strData[۱] = &quot;abcd&quot;;
&nbsp;
‫ ﺑﮕﺬارﻳﺪ. در اﻳﻦ ﻣﺜﺎل ﻣﻲ ﺧﻮاھﯿﻢ‬ex۰۶ ‫ ﺳﻲ ﺷﺎرپ را ﺑﺎز ﻛﻨﯿﺪ و ﻧﺎم آﻧﺮا در اﺑﺘﺪا‬Console ‫ﻣﺜﺎل : ﻳﻚ ﭘﺮوژه ی ﺟﺪﻳﺪ‬
: ‫ﻧﺤﻮه ی ﻛﺎر ﺑﺎ آراﻳﻪ ھﺎ را ﻣﺮور ﻛﻨﯿﻢ‬
&nbsp;
using System;

namespace ex۰۶
{
class Class۱
{
[STAThread]
static void Main(string[] args)
{
string[] sGoalList = new string[۳];
string sReplyStatement = &quot;You have choosen Goal '&quot;;

// Store goals in the array
sGoalList[۰] = &quot;Hike the Appalachian Trail&quot;;
sGoalList[۱] = &quot;Run the marathon&quot;;
sGoalList[۲] = &quot;Give $۱ million to worthwhile causes&quot;;

// Store response to goals in the array
//(declaring and initializing on same line)
string[] sGoalResponse = {
&quot;If you are staring from GA, you should get &quot;
+ &quot;started in early spring, so you will &quot;+
&quot;not get caught in snow.&quot;,
&quot;Make sure that you have a good pair of shoes.&quot;,
&quot;Start saving as soon as possible.&quot;};

// Give the user a list of goals to choose from
Console.WriteLine(&quot;GOAL LIST&quot;);

for(int i = ۰; i &lt; sGoalList.Length; i++)
{
Console.WriteLine(&quot;Goal &quot; + i +
&quot; - &quot; + sGoalList[i]);
}

‫.‪// Request the user to choose a goal‬‬
‫‪Console.WriteLine (&quot;&quot;); // Write an empty line for space‬‬
‫&quot; ‪Console.Write(&quot;Please choose the number of the‬‬
‫;(&quot; :[۲,۱,۰] ‪+ &quot;goal that you want to achieve‬‬

‫;()‪Console.ReadLine‬‬

‫{
‫{‬
‫{‬


‫ﻧﻜﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١- ﻧﺤﻮه ی اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮ + را ﺑﺮای اﺗﺼﺎل رﺷﺘﻪ ھﺎی ﺑﻠﻨﺪ در ﻛﺪ ﻓﻮق ﻣﻲ ﺗﻮان دﻳﺪ.‬
‫٢- در ﺳﻲ ﺷﺎرپ ﭘﺎﻳﺎن ﺧﻂ ﺳﻤﻲ ﻛﻮﻟﻮن ﻣﻲ ﺑﺎﺷﺪ. ﺑﻨﺎﺑﺮاﻳﻦ ﻧﮕﺮاﻧﻲ در ﻣﻮرد ﭼﻨـﺪ ﺧﻄـﻲ ﺷـﺪن ﻳـﻚ دﺳـﺘﻮر‬ ‫وﺟﻮد ﻧﺪارد.‬
‫٣-  ھﻨﮕﺎﻣﻲ ﻛﻪ آراﻳﻪ ای را ﺑﺎ ﻣﻘﺎدﻳﺮ درون آﻛﻮﻻدھﺎ ، ﻣﻘﺪار دھﻲ اوﻟﯿﻪ ﻣﻲ ﻛﻨﯿﺪ  ﻟﺰوﻣﻲ ﻧﺪارد ﻃﻮل آن آراﻳـﻪ را‬ ‫ﻣﺸﺨﺺ ﻛﻨﯿﺪ ؛ ﻣﺎﻧﻨﺪ آراﻳﻪ ‪ sGoalResponse‬  در ﺑـﺎﻻ. در ﻏﯿـﺮ اﻳﻨـﺼﻮرت ﺣﺘﻤـﺎ ﺑﺎﻳـﺪ ﻃـﻮل ﻳـﻚ آراﻳـﻪ را ﻛـﻪ‬
‫ﻣﻌﺮف ﺗﻌﺪاد ﺧﺎﻧﻪ ھﺎی ﺧﺎﻟﻲ آن اﺳﺖ ، ﻣﻌﺮﻓﻲ ﻛﻨﯿﺪ ﻣﺎﻧﻨﺪ آراﻳﻪ ‪. sGoalList‬‬
۴- ﻓﻌﻼ ﺣﻠﻘﻪ ی ‪ for‬را در اﻳﻦ ﻣﺜﺎل ﺑﺨﺎﻃﺮ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﺗﺎ در ﻣﻘﺎﻟﻪ ی ﺑﻌﺪی راﺟﻊ ﺑﻪ آن ﺻﺤﺒﺖ ﻛﻨﯿﻢ.‬
&nbsp;

منبع: سایت VCsharp.ir
]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


<item>
<title>درس چهارم</title>
<link>https://mhdsoft.loxblog.com/درس-چهارم</link>
<guid>https://mhdsoft.loxblog.com/درس-چهارم</guid>

<description><![CDATA[
ﺳﺎﺧﺘﺎرھﺎی ﺗﺼﻤﯿﻢ ﮔﯿﺮی ‬

‫در  ﺑﺴﯿﺎری از ﻣﻮارد ھﻨﮕﺎم ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻻزم اﺳـﺖ ﺗـﺎ از ﻋﺒـﺎرات ﺷـﺮﻃﻲ  اﺳـﺘﻔﺎده ﻛﻨـﯿﻢ. ﺑـﺮای اﻧﺠـﺎم اﻳﻨﻜـﺎر دو‬ ‫روش ﻋﻤﺪه وﺟﻮد دارد. اﺳﺘﻔﺎده از  ‪ if‬ و ﻳﺎ ‪ . switch‬از ‪ if‬ ﺑﯿـﺸﺘﺮ ﺑـﺮای ﻣﻘﺎﻳـﺴﻪ ھـﺎی ﺗﻜـﻲ و ﻛﻮﭼـﻚ  اﺳـﺘﻔﺎده ﻣـﻲ‬ ‫ﺷﻮد و ﺣﺎﺻﻞ ﻣﻘﺎﻳﺴﻪ ی آن ﻳﺎ ‪ true‬ اﺳﺖ و ﻳﺎ ‪ . false‬از  ﻋﺒﺎرت ‪ switch‬ھﻨﮕﺎﻣﻲ اﺳﺘﻔﺎده ﻣـﻲ ﺷـﻮد ﻛـﻪ ﻣﻘﺎﻳـﺴﻪ ‫ھﺎی ﻣﺘﻌﺪدی ﺑﺎﻳﺪ در  ﻣﻮرد ﻳﻚ ﻣﻘﺪار ﺻﻮرت ﮔﯿﺮد.‬
‫ھﺮ دو ﻋﺒﺎرت ‪ if‬ و ‪ switch‬ﺗﻮﺳﻂ ﻋﺒﺎرﺗﮫﺎی  ‪ Boolean‬ ﻛﻨﺘﺮل ﻣﻲ ﺷﻮﻧﺪ( ‪ true‬و ﻳﺎ ‪ . ( false‬در ھﻨﮕـﺎم اﺳـﺘﻔﺎده از  ‪if‬‬ ‫اﮔﺮ ﻋﺒﺎرت ‪ Boolean‬ ﺣﺎﺻﻞ اش ‪ true‬ﺑﺎﺷﺪ اوﻟﯿﻦ ﻗﺴﻤﺖ ﺷﺮط اﺟﺮا ﻣﻲ  ﺷـﻮد و ﺳـﭙﺲ ﺑﺮﻧﺎﻣـﻪ از اﻧﺘﮫـﺎی ‪ if‬ اداﻣـﻪ‬ ‫ﭘﯿﺪا ﻣﻲ ﻛﻨﺪ. اﮔﺮ ﺣﺎﺻﻞ  ﻋﺒﺎرت ‪ Boolean‬ ﻣﺴﺎوی ‪ false‬ ﺑﺎﺷﺪ ﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻗﺴﻤﺖ ‪ else‬ ﻣﻨﺘﻘﻞ  ﻣﻲ ﺷﻮد.‬

ﺳﺎﺧﺘﺎرھﺎی ﺗﺼﻤﯿﻢ ﮔﯿﺮی ‬

‫در  ﺑﺴﯿﺎری از ﻣﻮارد ھﻨﮕﺎم ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﻻزم اﺳـﺖ ﺗـﺎ از ﻋﺒـﺎرات ﺷـﺮﻃﻲ  اﺳـﺘﻔﺎده ﻛﻨـﯿﻢ. ﺑـﺮای اﻧﺠـﺎم اﻳﻨﻜـﺎر دو‬ ‫روش ﻋﻤﺪه وﺟﻮد دارد. اﺳﺘﻔﺎده از  ‪ if‬ و ﻳﺎ ‪ . switch‬از ‪ if‬ ﺑﯿـﺸﺘﺮ ﺑـﺮای ﻣﻘﺎﻳـﺴﻪ ھـﺎی ﺗﻜـﻲ و ﻛﻮﭼـﻚ  اﺳـﺘﻔﺎده ﻣـﻲ‬ ‫ﺷﻮد و ﺣﺎﺻﻞ ﻣﻘﺎﻳﺴﻪ ی آن ﻳﺎ ‪ true‬ اﺳﺖ و ﻳﺎ ‪ . false‬از  ﻋﺒﺎرت ‪ switch‬ھﻨﮕﺎﻣﻲ اﺳﺘﻔﺎده ﻣـﻲ ﺷـﻮد ﻛـﻪ ﻣﻘﺎﻳـﺴﻪ ‫ھﺎی ﻣﺘﻌﺪدی ﺑﺎﻳﺪ در  ﻣﻮرد ﻳﻚ ﻣﻘﺪار ﺻﻮرت ﮔﯿﺮد.‬
‫ھﺮ دو ﻋﺒﺎرت ‪ if‬ و ‪ switch‬ﺗﻮﺳﻂ ﻋﺒﺎرﺗﮫﺎی  ‪ Boolean‬ ﻛﻨﺘﺮل ﻣﻲ ﺷﻮﻧﺪ( ‪ true‬و ﻳﺎ ‪ . ( false‬در ھﻨﮕـﺎم اﺳـﺘﻔﺎده از  ‪if‬‬ ‫اﮔﺮ ﻋﺒﺎرت ‪ Boolean‬ ﺣﺎﺻﻞ اش ‪ true‬ﺑﺎﺷﺪ اوﻟﯿﻦ ﻗﺴﻤﺖ ﺷﺮط اﺟﺮا ﻣﻲ  ﺷـﻮد و ﺳـﭙﺲ ﺑﺮﻧﺎﻣـﻪ از اﻧﺘﮫـﺎی ‪ if‬ اداﻣـﻪ‬ ‫ﭘﯿﺪا ﻣﻲ ﻛﻨﺪ. اﮔﺮ ﺣﺎﺻﻞ  ﻋﺒﺎرت ‪ Boolean‬ ﻣﺴﺎوی ‪ false‬ ﺑﺎﺷﺪ ﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻗﺴﻤﺖ ‪ else‬ ﻣﻨﺘﻘﻞ  ﻣﻲ ﺷﻮد.‬


‫ﻣﺜﺎل :‬

‫ﻳﻚ ﭘﺮوژه ی ﺟﺪﻳﺪ ‪ console‬ﺑﺎز ﻛﻨﯿﺪ و ﻧﺎم آﻧﺮا ‪ ex۴۰‬ ﺑﮕﺬارﻳﺪ. ﺳﭙﺲ ﻛﺪ زﻳﺮ را در آن وارد و اﺟﺮا ﻛﻨﯿﺪ :‬


‫;‪using System‬‬

‫‪namespace ex‬‬۴۰
‫}‬
‫class Class۱‬‬
‫}
‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}
‫;(&quot;‪Console.WriteLine(&quot;Enter ۱ character to be evaluated‬‬
‫;()‪char cUserInput = (char) Console.Read‬‬
‫( ( ‪if ( char.IsDigit ( cUserInput‬‬
‫;(&quot;!‪Console.WriteLine(&quot;The char is a number‬‬
‫‪else‬‬
‫;(&quot;!‪Console.WriteLine(&quot;The char is not a number‬‬
‫{
{‬
‫{‬


ﻧﻜﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬

‫ﺳﻲ ﺷﺎرپ ﺑﻪ ﻛﻮﭼﻜﻲ و ﺑﺰرﮔـﻲ ﺣـﺮوف ﺣـﺴﺎس اﺳـﺖ . ﺑـﺮای ﻣﺜـﺎل ‪ cUserInput‬ﺑـﺎ cUserinput‬‬ ‫ﻓﺮق ﻣﻲ ﻛﻨﺪ.‬
‫ﺣﺘﻤﺎ ﺑﺎﻳﺪ ﺑﻌﺪ از ‪ if‬ ﭘﺮاﻧﺘﺰھﺎ ذﻛﺮ ﮔﺮدد.‬ ‫
ﺣﺘﻤﺎ ﺑﺎﻳﺪ داﺧﻞ ‪ if‬ ﻳﻚ ﻋﺒﺎرت ‪ Boolean‬ ذﻛﺮ ﺷﻮد ﻣﺎﻧﻨﺪ ( ۵&gt;‪. if( x‬‬
‫در ﺳـﻲ ﺷـﺎرپ ﻣﻘﺎﻳـﺴﻪ ی ﺗـﺴﺎوی دو ﻋﺒـﺎرت ﺑـﺎ == و اﻧﺘـﺴﺎب ﺑـﺎ = اﻧﺠـﺎم ﻣـﻲ ﺷـﻮد. 
‫ﻣﻮاردی  ھﺴﺘﻨﺪ ﻛﻪ اﻏﻠﺐ ﺗﺎزه ﻛﺎران ﺑﺎ آن ﻣﺸﻜﻞ دارﻧﺪ! ﺑﺮای ﻣﺜﺎل ( ۳==‪ if ( i‬ﺻﺤﯿﺢ  اﺳﺖ اﻣـﺎ (۳ =‪ if ( i‬در‬ ‫ﺳﻲ ﺷﺎرپ ﻣﻌﻨﺎﻳﻲ ﻧﺪارد.‬
‫اﮔﺮ ﺑﻌﺪ از ‪ if‬  ﻳﻚ ﺧﻂ ﻛﺪ ﻗﺮار ﮔﯿﺮد ﻧﯿﺎزی ﺑﻪ آوردن آﻛﻮﻻد ھﺎ ﻧﯿﺴﺖ. ھﻨﮕﺎﻣﻲ ﻧﯿﺎز ﺑﻪ آﻛﻮﻻدھﺎ  ﻣﻲ ﺑﺎﺷﺪ ﻛـﻪ‬ ‫ﺑﯿﺶ از ﻳﻚ ﺧﻂ ﺑﺎﻳﺪ ﺑﻌﺪ از ‪ if‬ ﻗﺮار ﮔﯿﺮد.‬
‫
‫ھﻤﺎﻧﻄﻮر  ﻛﻪ ذﻛﺮ ﺷﺪ در ﺳﻲ ﺷﺎرپ ھﻤﻪ ﭼﯿـﺰ ﺷـﻲء اﺳـﺖ ﺣﺘـﻲ ﻧـﻮع ھـﺎی ﭘﺎﻳـﻪ اﻳـﻲ  ﻣﺎﻧﻨـﺪ ‪ . char‬ﺑـﺎ‬ ‫اﺳﺘﻔﺎده از ﻣﺘﺪ ‪ IsDigit‬آن ﻣﻲ ﺗﻮان ﭼﻚ ﻛﺮد ﻛﻪ آﻳﺎ  ورودی آن ﻋﺪد اﺳﺖ ﻳﺎ ﺧﯿﺮ؟ ( در ﻣﻮرد ﻣﺘـﺪھﺎ ﺻـﺤﺒﺖ‬‫ﺧﻮاھﺪ ﺷﺪ. )‬
اﺳﺘﻔﺎده از ‪: switch‬‬

ﺑﮫﺘﺮ اﺳﺖ اﻳﻦ ﻣﻮرد را ﺑﺎ ﻳﻚ ﻣﺜﺎل دﻧﺒﺎل ﻛﻨﯿﻢ.‬
‫ﭘﺮوژه  ی ﺳﻲ ﺷﺎرپ ﺟﺪﻳﺪی ﺑﻪ ﻧﺎم ‪ ex۵۰‬ در ﺣﺎﻟﺖ ‪ console‬در ‪ VS.NET‬ﺑﺎز ﻛﻨﯿﺪ.  دراﻳﻨﺠﺎ ﻣـﻲ ﺧـﻮاھﯿﻢ ﻳـﻚ ﻛـﻼس‬ ‫ﺟﺪﻳﺪ ﺗﻌﺮﻳﻒ ﻛﺮده و ﺗﻮﺳﻂ ﺧﺎﺻﯿﺘﻲ ﻛﻪ در آن  اﻳﺠﺎد ﻣﻲ ﻛﻨﯿﻢ ﻣﺘﻮﺟﻪ ﺷـﻮﻳﻢ روز ﺟـﺎری ﻣﻄـﺎﺑﻖ ﺳﯿـﺴﺘﻢ ﭼـﻪ روزی‬ ‫اﺳﺖ .‬
‫ﻳﻚ ﻛﻼس ﺟﺪﻳﺪ از ﻣﻨﻮی ﭘﺮوژه ،ﺑﺎ اﺳﺘﻔﺎده از ﮔﺰﻳﻨﻪ ی ‪ Add class‬ ﺑﻪ ﺑﺮﻧﺎﻣﻪ اﺿﺎﻓﻪ ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا در اﺑﺘـﺪا clsDate‬‬ ‫ﺑﮕﺬارﻳﺪ.‬


‫;‪using System‬‬

‫‪namespace ex‬‬۵۰
‫}
‫&lt;‪/// 
‫‪public class clsDate‬‬
‫}‬
‫()‪public clsDate‬‬
‫}‬
‫//‬
‫‪// TODO: Add constructor logic here‬‬
‫//‬
{‬
public string systemDayOfWeek‬‬
‫}‬
‫‪get‬‬
 
&nbsp;
&nbsp;
 
{
 
string res=&quot;&quot;;
switch( System.DateTime.Now.DayOfWeek.ToString())
{
case &quot;Saturday&quot; :
res = &quot;‫;&quot;ﺷﻨﺒﻪ‬
break;
case &quot;Sunday&quot; :
res = &quot;‫; &quot;ﺷﻨﺒﻪ ﯾﮏ‬
break;
case &quot;Monday&quot;:
res = &quot;‫;&quot;دوﺷﻨﺒﻪ‬
break;
case &quot;Tuesday&quot;:
res = &quot;‫;&quot;ﺷﻨﺒﻪ ﺳﻪ‬
break;
case &quot;Wednesday&quot;:
res = &quot;‫;&quot;ﺷﻨﺒﻪ ﭼﻬﺎر‬
break;
case &quot;Thursday&quot;:
res = &quot;‫;&quot;ﺷﻨﺒﻪ ﭘﻨﺞ‬
break;
case &quot;Friday&quot;:
res = &quot;‫; &quot;ﲨﻌﻪ‬
break;
}
return res ;
{
{
{
{


‫ھﻨﮕﺎم  ذﺧﯿﺮه ﻛﺮدن اﻳﻦ ﻛﺪ وﻳﮋوال اﺳﺘﻮدﻳﻮ ﺑﻪ ﺷﻤﺎ اﺧﻄﺎر ﻣﻲ دھﺪ ﻛﻪ ﻛﺪ دارای ﺣﺮوف  ﻳﻮﻧﯿﻜﺪ اﺳﺖ. از ﻣﻨﻮی ﻓﺎﻳـﻞ گزینه Advanced Save Option را انتخاب کنید.‬ در  اﻳﻨﺠﺎ ﻣﻲ ﺗﻮان ﻧﻮع ذﺧﯿﺮه ﺳﺎزی را ﻳﻮﻧﯿﻜﺪ اﻧﺘﺨﺎب ﻛﺮد‬‬. ‫ﺑﺮای اﺳﺘﻔﺎده از  ﻛﻼس ﻓﻮق ﻣﺎﻧﻨﺪ ﻣﻄﺎﻟﺒﻲ ﻛﻪ در ﻗﺴﻤﺖ ﻗﺒﻞ ﮔﻔﺘﻪ ﺷﺪ ﻋﻤﻞ ﻣﻲ ﻛﻨﯿﻢ :‬


using System;

namespace ex۰۵
{
class Class۱
{
[STAThread]
static void Main(string[] args)
{
clsDate m_var = new clsDate();
‫;( ‪Console.WriteLine( m_var.systemDayOfWeek‬‬
‫;()‪Console.ReadLine‬‬
‫{‬
‫{‬
‫{‬

‫ھﺮ  ﭼﻨﺪ ﺣﺎﻟﺖ ‪ console‬ﻳﻮﻧﯿﻜﺪ را ﭘﺸﺘﯿﺒﺎﻧﻲ ﻧﻤﻲ ﻛﻨﺪ وﻟﻲ اﺻﻞ ﺑﺮﻧﺎﻣﻪ ﺑﺮای ﻣﺎ  ﻣﮫـﻢ اﺳـﺖ و در آﻳﻨـﺪه ﺑﯿـﺸﺘﺮ از آن‬ ‫اﺳﺘﻔﺎده ﺧﻮاھﯿﻢ ﻛﺮد.‬
‫ھﻤﺎﻧﻄﻮر ﻛﻪ  ﻣﻼﺣﻈﻪ ﻛﺮدﻳﺪ اﮔﺮ از ‪ switch‬اﺳﺘﻔﺎده ﻧﻤﻲ ﺷﺪ ﺑﺎﻳﺪ از ٧ ﻋﺪد ‪ if‬ اﺳﺘﻔﺎده  ﻣـﻲ ﮔﺮدﻳـﺪ ﻛـﻪ اﺻـﻼ ﻇـﺎھﺮ‬ ‫ﺣﺮﻓﻪ ای و ﺷﻜﯿﻠﻲ ﻧﺪاﺷﺖ!‬
‫ﺑﺎ اﺳﺘﻔﺎده از ﻋﺒﺎرت زﻳﺮ ﻛﺎر ﻣﻘﺎﻳﺴﻪ ﺷﺮوع ﻣﻲ ﺷﻮد. روز ﺳﯿﺴﺘﻢ درﻳﺎﻓﺖ ﺷﺪه و وارد ﺑﺪﻧﻪ ی ‪ switch‬ ﻣﻲ ﮔـﺮدد.‬
‫ﺳﭙﺲ ﺗﻮﺳﻂ ‪ case‬ ھﺎ ﭼﻚ ﻣﻲ ﺷﻮد ﺗﺎ ﺗﺴﺎوی آن ﺑﺎ ﻋﺒﺎرت ﺑﻌﺪ از ‪ case‬ ﺑﻪ اﺛﺒﺎت ﺑﺮﺳﺪ.‬

‫;(()‪switch( System.DateTime.Now.DayOfWeek.ToString‬‬
‫اﮔﺮ  ھﺮ ﻛﺪام از ﻋﺒﺎرات ﺑﻌﺪ از ‪ case‬ ﺻﺤﯿﺢ ﺑﻮدﻧـﺪ بعلت وجود دستور Break  برنامه از Switch خارج میشد و در غیر اینصورت به بررسی دیگر Case ها  میپرداخت.‬
‫اﮔﺮ ھﯿﭽﻜﺪام از ‪ case‬ھﺎ ﺻﺤﯿﺢ ﻧﺒﻮدﻧﺪ ﻣﻲ ﺗﻮان از ﮔﺰﻳﻨﻪ ی ‪ default‬ھﻢ در ﺻﻮرت ﻧﯿﺎز اﺳﺘﻔﺎده ﻛـﺮد. 
&nbsp;

منبع : سایت VCsharp.ir

&nbsp;
&nbsp;]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


<item>
<title>درس سوم</title>
<link>https://mhdsoft.loxblog.com/درس-سوم</link>
<guid>https://mhdsoft.loxblog.com/درس-سوم</guid>

<description><![CDATA[
در اﻳﻦ ﻗﺴﻤﺖ ﻣﻲ ﺧﻮاھﯿﻢ ﺑﺎ ﻳﻚ ﺳﺮی از اﺻﻮل اوﻟﯿﻪ ی ﺷﻲء ﮔﺮاﻳﻲ در ﺳﻲ ﺷﺎرپ ﻛﻤﻲ  آﺷـﻨﺎ ﺷـﻮﻳﻢ. ﻻزم ﺑـﻪ‬ ‫ذﻛﺮ اﺳﺖ ، ﺑﺴﯿﺎری از ﻣﻮاردی ﻛﻪ در اﻳﻦ ﻗـﺴﻤﺖ ﻣﻄـﺮح  ﻣـﻲ ﺷـﻮﻧﺪ ﻓﻘـﻂ ﺑـﺮای آﺷـﻨﺎﻳﻲ ﺷـﻤﺎ اﺳـﺖ و در آﻳﻨـﺪه‬ ‫ﺑﯿﺸﺘﺮ ﺑﺤﺚ و ﻣﺮور  ﺧﻮاھﻨﺪ ﺷﺪ.‬
در اﻳﻦ ﻗﺴﻤﺖ ﻣﻲ ﺧﻮاھﯿﻢ ﺑﺎ ﻳﻚ ﺳﺮی از اﺻﻮل اوﻟﯿﻪ ی ﺷﻲء ﮔﺮاﻳﻲ در ﺳﻲ ﺷﺎرپ ﻛﻤﻲ  آﺷـﻨﺎ ﺷـﻮﻳﻢ. ﻻزم ﺑـﻪ‬ ‫ذﻛﺮ اﺳﺖ ، ﺑﺴﯿﺎری از ﻣﻮاردی ﻛﻪ در اﻳﻦ ﻗـﺴﻤﺖ ﻣﻄـﺮح  ﻣـﻲ ﺷـﻮﻧﺪ ﻓﻘـﻂ ﺑـﺮای آﺷـﻨﺎﻳﻲ ﺷـﻤﺎ اﺳـﺖ و در آﻳﻨـﺪه‬ ‫ﺑﯿﺸﺘﺮ ﺑﺤﺚ و ﻣﺮور  ﺧﻮاھﻨﺪ ﺷﺪ.‬


‫آﺷﻨﺎﻳﻲ ﺑﺎ ﻓﻀﺎھﺎی ﻧﺎم ( ‪: ( Name Spaces‬‬

‫ﻓﻀﺎھﺎی  ﻧﺎم روﺷﻲ ﺑﺮای ﻣﺪﻳﺮﻳﺖ ﻛﺪ ﻧﻮﻳﺴﻲ ھﺴﺘﻨﺪ. ﺑﺮای ﻣﺜﺎل آﻧﮫﺎ اﻳﺠﺎد ﺷﺪه اﻧﺪ ﺗـﺎ  ﺗـﺪاﺧﻠﻲ ﺑـﯿﻦ ﻧـﺎم ھـﺎی‬ ‫ﺗﻮاﺑﻊ در ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ رخ ﻧﺪھﺪ. اﻳﻦ ﻣﺴﺎﻟﻪ در ﭘﺮوژه  ھﺎی ﺑﺰرگ ﺧﻮد را ﻧﺸﺎن ﻣﻲ دھﺪ و ﻣﻤﻜﻦ اﺳﺖ دو آﻳﺘﻢ در ﻳـﻚ‬ ‫ﭘﺮوژه ﻧﺎم ھﺎی  ﻳﻜﺴﺎﻧﻲ را ﭘﯿﺪا ﻛﻨﻨﺪ. ﺑﺪﻳﻦ وﺳﯿﻠﻪ اﻳﻦ ﺷﺎﻧﺲ ﺗﺼﺎدم و ﺗﺪاﺧﻞ ﻛﺎھﺶ ﭘﯿﺪا ﻣﻲ ﻛﻨﺪ.  ﺑﺮای اﻳﺠـﺎد ﻳـﻚ ‫ﻓﻀﺎی ﻧﺎم ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻲ ﺷﻮد:‬

&nbsp;
‫‪namespace anyName‬‬
‫}
‫..&hellip;&hellip;‬

‫‪Class anyClassName‬‬
}‬
‫.&hellip;&hellip;&hellip;‬
{

‫.&hellip;&hellip;‬

‫{‬



‫ﻳﻜﻲ  از ﻓﻀﺎھﺎی ﻧﺎم ﭘﺎﻳﻪ ای در دات ﻧﺖ ﻓﺮﻳﻢ ورک ، ﻓﻀﺎی ﻧﺎم ‪ System‬ ﻣﻲ  ﺑﺎﺷﺪ.‬‬ ‫ﺗﻤﺎم ﻓﻀﺎھﺎی ﻧﺎم ﺑﻪ ﺻﻮرت ﭘﯿﺶ ﻓﺮض ‪ public‬ ﻣﻲ ﺑﺎﺷﻨﺪ و در ﺧﺎرج از  ﻛﺪ ﺷﻤﺎ ﻗﺎﺑـﻞ دﺳﺘﺮﺳـﻲ ھـﺴﺘﻨﺪ. روش‬ ‫اﺳﺘﻔﺎده از آﻧﮫﺎ ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ:‬
‫‪ProjectName.NameSpace.ClassName.MemberName‬‬


‫ﻧﻜﺘﻪ :‬
‫اﮔﺮ دﻗﺖ ﻛﺮده ﺑﺎﺷﯿﺪ ھﻨﮕﺎﻣﻲ ﻛﻪ ﻛﺮﺳﺮ ﻣﺎوس را روی ھﺮ آﻳﺘﻤﻲ در ﻣﻨﻮی ‪ auto complete‬ﻧﮕﻪ ﻣﻲ دارﻳﺪ و ﻳﺎ آﻧﺮا‬
‫اﻧﺘﺨﺎب ﻣﻲ ﻛﻨﯿﺪ ﻳﻚ راھﻨﻤﺎی ﻛﻮﭼﻚ ﻧﻤﺎﻳﺶ داده ﻣﻲ ﺷﻮد ﻛـﻪ در ﺣﻘﯿﻘـﺖ ﻛﺎﻣﻨـﺖ ﻣﺮﺑـﻮط ﺑـﻪ آن ﺗـﺎﺑﻊ ﻣـﻲ ﺑﺎﺷـﺪ.‬
‫روش ﻧﻮﺷﺘﻦ ﭼﻨﯿﻦ ﻛﺎﻣﻨﺖ ﺣﺮﻓﻪ ای ﻛﻪ در ﻣﻨﻮھﺎی وﻳﮋوال اﺳﺘﻮدﻳﻮ ﻇﺎھﺮ ﺷﻮد ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ :
‫&lt;‪///
ﺑﺮای اﺳﺘﻔﺎده از اﻳﻦ ﺧﺎﺻﯿﺖ ﺟﺪﻳﺪ ، در ﻓﺎﻳﻞ ‪ Class۱.cs‬ﻛﻪ ﻣﺘﺪ ‪ main‬ ﺑﺮﻧﺎﻣﻪ ی ﻣﺎ در آﻧﺠﺎ ﻗﺮار دارد ﺑﻪ ﺻـﻮرت زﻳـﺮ ‫ﻋﻤﻞ ﻣﻲ ﻛﻨﯿﻢ :‬

&nbsp;
‫‪clsDate m_var = new clsDate(); // initialize variable‬‬
‫;( ‪Console.WriteLine ( m_var.currentSystemDate‬‬

‫!‪Console.ReadLine(); //pause‬‬


‫ﺗﻮﺿﯿﺢ ﻛﺪ ﻓﻮق :‬

‫ﺑﺮای  اﺳﺘﻔﺎده از ﻳﻚ ﻛﻼس ﺑﺎﻳﺪ ﻳﻚ ﻣﺘﻐﯿﺮ از آن را ﺗﻌﺮﻳﻒ ﻛﻨﯿﻢ. در ھﺮ زﺑﺎﻧﻲ ﻳﻚ ﺳﺮی  ﻧـﻮع ھـﺎی اﺳـﺘﺎﻧﺪارد ﻣﺎﻧﻨـﺪ‬‫‪ int ‬و ‪ string‬ و ﻏﯿﺮه وﺟﻮد دارﻧﺪ. ﻛﻼس  ھﻢ در ﺣﻘﯿﻘﺖ ﻳﻚ ﻧـﻮع داده ی ﺑـﺴﯿﺎر ﺑـﺴﯿﺎر ﻗﺪرﺗﻤﻨـﺪ ﺑـﻪ ﺷـﻤﺎر ﻣـﻲ آﻳـﺪ.‬  ‫ﺑﺮای ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺘﻐﯿﺮ از ﻧﻮع ﺟﺪﻳﺪ روش ﻛﺎر ﻣﺎﻧﻨﺪ ﺳﺎﺑﻖ اﺳﺖ. ﺑﺮای ﻣﺜﺎل زﻣﺎﻧﻲ  ﻛﻪ ﻳﻚ ﻣﺘﻐﯿﺮ ﻋﺪد ﺻﺤﯿﺢ را ﺗﻌﺮﻳـﻒ ‫ﻣﻲ ﻛﻨﯿﺪ ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻣﻲ ﺷﻮد :‬
‫;۰=‪int i‬‬

‫ﺑﺮای ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺘﻐﯿﺮ از ﻧﻮع داده ای ﻛﻪ ﺧﻮدﻣﺎن ﺗﻌﺮﻳﻒ ﻛﺮده اﻳﻢ ﻧﯿﺰ ﺑﺎﻳﺪ ﺑﻪ ھﻤﯿﻦ ﺻﻮرت ﻋﻤﻞ ﺷﻮد.‬
‫;()‪clsDate m_var = new clsDate‬‬

‫از ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪ new‬اﻳﻨﺠﺎ ﺑﻪ ﺻـﻮرت اﺳـﺘﺎﻧﺪارد ﺑـﺮای ﻣﻘـﺪار دھـﻲ اوﻟﯿـﻪ ﺑـﻪ اﻳـﻦ ﻣﺘﻐﯿـﺮ ﺟﺪﻳـﺪ اﺳـﺘﻔﺎده ﻣـﻲ‬ ‫ﻧﻤﺎﻳﯿﻢ.‬
‫ﺳﭙﺲ ﺑﻪ روش دﺳﺘﯿﺎﺑﻲ ﺑﻪ اﻳﻦ ﺧﺎﺻﯿﺘﻲ ﻛﻪ ﺑﻪ ﻛﻼس اﺿﺎﻓﻪ ﻛﺮده اﻳﻢ ﻣﻲ رﺳﯿﻢ.‬
‫‪m_var.currentSystemDate‬‬

‫ﻛﻼ  ﭼﻪ ﻳﻚ ﺧﺎﺻﯿﺖ و ﻳﺎ ﻳﻚ ﻣﺘﺪ را ﺑﻪ ﻛﻼس اﺿﺎﻓﻪ ﻧﻤﺎﻳﯿﻢ ﺑﺮای دﺳﺘﯿﺎﺑﻲ ﺑـﻪ آن از  ﻋﻤﻠﮕـﺮ ﻧﻘﻄـﻪ ﭘـﺲ از ذﻛـﺮ ﻧـﺎم ‫ﻣﺘﻐﯿﺮ ﺗﻌﺮﻳﻒ ﺷﺪه از ﻧﻮع ﻛﻼس ﺧﻮد ، اﺳﺘﻔﺎده  ﻣﻲ ﻧﻤﺎﻳﯿﻢ. ﺑﺮای اﺳﺘﻔﺎده از ﺧﺎﺻﯿﺖ ھـﺎ ﻧﯿـﺎزی ﺑـﻪ آوردن () ﺑﻌـﺪ از‬ ‫ذﻛﺮ  ﻧﺎم ﺧﺎﺻﯿﺖ ﻧﻤﻲ ﺑﺎﺷﺪ.‬

‫ﻋﻤﻮﻣﺎ از ﺧﺎﺻﯿﺖ ھﺎ ﺑﺮای ﺑﺮﮔﺮداﻧﺪن و ﻳﺎ ﺗﻨﻈﯿﻢ ﻳﻚ ﻣﻘﺪار ﺳﺎده اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد و در آﻧﮫـﺎ ﻋﻤﻠﯿـﺎت ﭘﯿﭽﯿـﺪه ای‬ ‫ﻣﺪ ﻧﻈﺮ ﻧﻤﻲ ﺑﺎﺷﺪ.‬
&nbsp;
; () ‪System.DateTime.Today.ToString‬‬
‫ﺗﻮﺿﯿﺤﻲ در ﻣﻮرد ‫اﺳﺘﻔﺎده از ﺧﻮاص :‬

‫ﺷﻤﺎ  ﺑﻪ وﻳﮋﮔﻲ ھﺎی ﻳﻚ ﺷﻲء ﺑﺎ اﺳﺘﻔﺎده از ﺧﻮاص آن ﻣﻲ ﺗﻮاﻧﯿـﺪ دﺳﺘﺮﺳـﻲ ﭘﯿـﺪا  ﻛﻨﯿـﺪ. ﻳـﻚ ‪ property‬ ﻋـﻀﻮی ‫اﺳﺖ ﻛﻪ اﻣﻜﺎن دﺳﺘﺮﺳﻲ ﺑﻪ وﻳﮋﮔﻲ ﺷﻲء ﻳﺎ ﻛﻼس را  ﻓﺮاھﻢ ﻣﻲ ﻛﻨﺪ. ﺑﺮای ﻣﺜﺎل ﻃﻮل ﻳﻚ رﺷﺘﻪ (‪ ، (string‬ﺳـﺎﻳﺰ‬ ‫ﻳﻚ ﻓﻮﻧﺖ ،  ﻋﻨﻮان ﻳﻚ ﻓﺮم و ﻧﺎم ﻳﻚ ﻣﺼﺮف ﻛﻨﻨﺪه ، ﺧﺎﺻﯿﺖ ھﺴﺘﻨﺪ .‬
‫ﺑﺴﯿﺎری از اﺷﯿﺎء  ذاﺗﻲ دات ﻧﺖ ﻓﺮﻳﻢ ورک ، ﺧﻮاص ﻣﻔﯿﺪ زﻳﺎدی را ﺑﻪ ھﻤﺮاه دارﻧﺪ. ﺑﺮای ﻣﺜﺎل ﺷـﻲء  ‪ DateTime‬ را‬ ‫در ﻧﻈﺮ ﺑﮕﯿﺮﻳﺪ. ﺑﺎ اﺳﺘﻔﺎده از ﺧﺎﺻﯿﺖ ‪ Today‬آن ﻣﻲ ﺗﻮان  ﺗﺎرﻳﺦ ﺟﺎری ﺳﯿﺴﺘﻢ را ﺑﺪﺳﺖ آورد. ﺑﺮای اﺳـﺘﻔﺎده از ﻳـﻚ ‫ﺧﺎﺻﯿﺖ ﻻزم اﺳﺖ ﺗﺎ  ﻛﻼس ﺗﻌﺮﻳﻒ ﻛﻨﻨﺪه ﺷﻲء در ﺑﺮﻧﺎﻣﻪ ﻣﮫﯿﺎ ﺑﺎﺷﺪ. ﻣﻨﻈﻮر ھﻤﺎن اﺳـﺘﻔﺎده از ﻓـﻀﺎی  ﻧـﺎم ﻣﺮﺑﻮﻃـﻪ‬ ‫ﻣﻲ ﺑﺎﺷﺪ. ﭘﺲ از وارد ﻛﺮدن ﻓﻀﺎی ﻧﺎم ﻛﻼس ﻣﻮرد ﻧﻈﺮ ﻣﻲ ﺗﻮاﻧﯿﺪ  از ﺷﻲء و ﺧﻮاص آن اﺳﺘﻔﺎده ﻛﻨﯿﺪ. دو راه وﺟﻮد‬ ‫دارد ﻳﺎ ﺑﻪ ﺻﻮرت ﻛﺎﻣﻞ ﺗﻤﺎم  ﻣـﻮارد ﺑﺎﻳـﺪ ذﻛـﺮ ﺷـﻮﻧﺪ ﻣﺎﻧﻨـﺪ ;‪ System.DateTime.Now‬و ﻳـﺎ ﺑـﺎ وارد  ﻛـﺮدن ﻓـﻀﺎی ﻧـﺎم‬ ‫‪ System‬ﻛﻮﺗﺎه ﺳﺎزی ﺻﻮرت ﻣﻲ ﮔﯿﺮد.‬
‫ﺑﺮای اﺳﺘﻔﺎده  از ھﺮ ﻣﺘﺪ و ﻳﺎ ﺷﻲء اﻳﻲ در ﺳﻲ ﺷﺎرپ ﺑﺎﻳﺪ اﻳﻦ ﺷﻲء ﻗﺎﺑـﻞ دﺳﺘﺮﺳـﻲ ﺑﺎﺷـﺪ.  ﺑـﺮای ﻣﺜـﺎل ﺷـﻲء‬‪ Console‬ ﻛﻪ از آن ﺑﺮای ﭼﺎپ ﻛﺮدن ﺧﺮوﺟﻲ ﺑـﺮ روی ﺻـﻔﺤﻪ ی  ﻧﻤـﺎﻳﺶ اﺳـﺘﻔﺎده ﻣـﻲ ﻛﻨـﯿﻢ در ﻓـﻀﺎی ﻧـﺎم ‪System‬‬ ‫واﻗﻊ ﺷﺪه اﺳﺖ. ﻳﺎ  ﺑﺎﻳﺪ در اﺑﺘﺪای ﺑﺮﻧﺎﻣﻪ ذﻛﺮ ﻛﺮد ; ‪ using System‬و ﺳـﭙﺲ ﺧﯿﻠـﻲ راﺣـﺖ از  اﻳـﻦ ﺷـﻲء اﺳـﺘﻔﺎده‬ ‫ﻛﺮد و ﻳﺎ ﻣﻲ ﺗﻮان اﻳﻨﻜﺎر را اﻧﺠﺎم ﻧﺪاد و ﻧﻮﺷﺖ : ‪  System.Console‬و اﻟﻲ آﺧﺮ. ﺑﺎ ذﻛﺮ ﻓﻀﺎی ﻧﺎم در اﺑﺘﺪا ﺑﺎ اﺳـﺘﻔﺎده‬ ‫از ‪  using‬ ﻣﻲ ﺗﻮان ﺧﻼﺻﻪ ﻧﻮﻳﺴﻲ ﻛﺮد.‬
&nbsp;
‫ﻧﺘﯿﺠﻪ ی ﻧﮫﺎﻳﻲ ﻣﺜﺎل اﻳﻦ ﻓﺼﻞ :‬
ﻣﺤﺘﻮﻳﺎت ﻓﺎﻳﻞ ‪: Class۱.cs‬‬
&nbsp;
‫;‪using System‬‬

‫‪namespace ex۳۰‬‬
‫}‬
&lt;‪/// &lt;summary‬‬
‫.۱‪/// Summary description for Class‬‬
‫&lt;‪/// &lt;/summary‬‬
‫۱‪class Class‬‬
‫}‬
‫&lt;‪/// &lt;summary‬‬
‫.‪/// The main entry point for the application‬‬
‫&lt;‪/// &lt;/summary‬‬
‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}‬
‫‪clsDate m_var = new clsDate(); // initialize variable‬‬
‫;( ‪Console.WriteLine ( m_var.currentSystemDate‬‬

‫!‪Console.ReadLine(); //pause‬‬
{
‫{‬
‫{‬


ﻣﺤﺘﻮﻳﺎت ﻓﺎﻳﻞ ‪ clsDate.cs‬ﻛﻪ ﺑﻪ ﺑﺮﻧﺎﻣﻪ اﺿﺎﻓﻪ ﻛﺮدﻳﻢ:‬
&nbsp;
‫;‪using System‬‬

‫‪namespace ex۳۰‬‬
‫}‬
‫&lt;‪/// &lt;summary‬‬
‫.‪/// Summary description for clsDate‬‬
‫&lt;‪/// &lt;/summary‬‬
‫‪public class clsDate‬‬
‫}‬
()‪public clsDate‬‬
‫}‬
‫//‬
‫‪// TODO: Add constructor logic here‬‬
‫//‬
‫{‬

‫‪public string currentSystemDate‬‬
‫}‬
‫‪get‬‬
‫}‬
‫; ()‪return System.DateTime.Today.ToString‬‬
{‬
{
{‬
‫{

منابع : برگفته از سایت VCsharp.ir]]></description>

<pubDate>Fri, 26 Jun 2026 00:41:45 +0330</pubDate>
</item>


</channel>
</rss>

