یادگیری سی شارپ

saalek110

Well-Known Member
attachment.php

من می خواهم کدنویسی سی شارپ را یاد بگیرم و اینجا مقداری می خواهم اشکالاتم را بپرسم.
من قبلا کدنویسی سی پلاس کار کرده ام و هدفم اینه که با یاری گرفتن از اساتید اینجا مثل unique و night و یاری دیگر افرادی که یا در حال یادگیری سی شارپ هستند یا مقدار بیشتری از راه را رفته اند سی شارپ یاد بگیرم.
پس هر کس هر نکته ای می تواند اضافه کند. هدف داشتن آموزش مدون نیست اینجا بلکه هم فکری برای سریع تر رفتن به جلو است. نمی خواهیم دوباره کاری کنیم و کاری که در سایتهای دیگر انجام شده را تکرار کنیم بلکه هدف جذب تمام مطالب آماده و سریعتر به کاربرد و قسمت پیشرفته رسیدن است.

قسمتهایی که با سی پلاس مشترک است را من توضیح نمی دهم و از لینک ها استفاده کنید.(منظور کسانی است که سی شارپ اولین زبان آنهاست) به نوعی این تاپیک مهاجرت سریع از سی پلاس به سی شارپ است.

در تاپیک ((دات نت f1 لینک ))راجع به روش نصب ویژوال استودیو و اجرای برنامه ساخته شده بر کامپیوتر دیگر بحث شد. و اینجا فرض بر این است که شما ویژوال استودیو را نصب کرده اید.

کتاب آقای هاشمیان در تاپیک زیر:
آموزش c# به زبان فارسي
http://forum.majidonline.com/threads/202620-آموزش-c-به-زبان-فارسي
 

پیوست ها

  • a1.jpeg
    a1.jpeg
    5.7 کیلوبایت · بازدیدها: 3
  • a2.gif
    a2.gif
    57.5 کیلوبایت · بازدیدها: 2
آخرین ویرایش:

saalek110

Well-Known Member
a1.gif

من از منوی فایل گزینه new project را زدم و console application را از قسمت سی شارپ زدم. طبق آموزش زیر:
http://dev.ir/articles/show.asp?id=177

و بعد این برنامه خودکار برای من ساخته شد:
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
بعد طبق آن آموزش دستوری را افزودم:
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello C#!");
        }
    }
}
یعنی این خط اضافه شد:
Console.WriteLine("Hello C#!");
که کارش چاپ hello c# است.
حالا مشکل این است که برنامه زود بسته می شود بعد اجرا که یک خط اضافه می کنیم تا بسته نشود. راستش اولین سئوالم این بود که این خط کد چیه ولی در همین صفحه گفته بود.
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello C#!");
            Console.ReadLine(); // pause screen!
        }
    }
}

حالا بعد چاپ جمله اگر اینتر را بزینم برنامه خاتمه می یابد

از همین سایت انواع متغیر:
================
نوع هاي داده اي پايه ي زير در در سي شارپ به صورت پيش فرض مهيا هستند:

object : نوعي است نامحدود كه مي تواند تمام انواع ديگر را نيز شامل شود. مثال :

object = null;

string : رشته ؛ در اينجا يك رشته توالي كاراكترهاي يونيكد مي باشد. مثال :

string s= "hello";

sbyte : نوع داده ايي صحيح 8 بيتي علامت دار.
byte : نوع داده ايي صحيح 8 بيتي بدون علامت. مثال :

sbyte val = 12;

short : نوع داده ايي صحيح 16 بيتي علامت دار.
ushort : نوع داده ايي صحيح 16 بيتي بدون علامت. مثال :

short val = 12;

int : نوع داده ايي صحيح 32 بيتي علامت دار.
unit : نوع داده ايي صحيح 32 بيتي بدون علامت. مثال :

int val = 12;

long : نوع داده ايي صحيح 64 بيتي علامت دار.
ulong : نوع داده ايي صحيح 64 بيتي بدون علامت. مثال :

Long val1 = 12; long val2 = 34L;

كلا در اينجا u به معناي unsigned است.

float : نوع اعشاري با single precision .
double : نوع اعشاري با double precision . مثال :

float val = 1.23f;

bool : نوع داده ايي Boolean كه مي تواند true و يا false باشد. مثال :

Bool val = true;

char : كاراكتر، دراينجا char يك كاراكتر يونيكد است.

char val = 'h';

به نحوه ي تعريف كاراكتر ها و همچنين رشته ها در سي شارپ دقت كنيد.

decimal : نوع داده ايي دسيمال با 28 رقم معني دار.

decimal val = 1.23M;
================
نکته:
ابتدا نوع متغير و سپس نام متغير و در آخر يك سمي كولون بكار برده مي شود. براي مثال :

int a;

كه در اينجا متغير a بعنوان يك متغير حاوي اعداد صحيح تعريف شده است.
نكته ي مهمي كه در اينجا حائز اهميت است ، مقدار دهي اوليه ي متغيرها مي باشد. در غير اينصورت كامپايلر سي شارپ برنامه را بايك خطا متوقف مي كند. دليل اين امر هم اين است كه از استفاده از متغيرهاي بدون مقدار در طول برنامه جلوگيري شود تا ميزان خطاهاي در حين اجرا كاهش يابد.
================
برنامه بعدی این سایت:
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int intVar1 = 0;

            int intVar2;
            intVar2 = 1;

            int intV3 = 15, intV4 = 12;

            string strText1 = "abcd";

            Console.WriteLine(
            "The value for variables are : \n intVar1=" + intVar1 +
            "\n intVar2=" + intVar2 +
            "\n intV3=" + intV3 +
            "\n intV4=" + intV4 +
            "\n strText1=" + strText1);

            Console.WriteLine("\n\n Press inter to terminate");
            Console.ReadLine(); // pause screen!
        }
    }
}
که آمده متغیرهایی تعریف کرده و چاپ کرده. متغیر intvar2 چرا مقدار اولیه داده نشده. مگر قرار نبود همه متغیرها مقدار دهی شوند؟ منظور از مقدار دهی اولیه چیه؟ در سی که مقدار نمی دادیم خطا نمی گرفت. اینجا کی خطا می گیره اگر مقدار ندهیم؟

نتیجه اجرا:

a5.gif

برای جزئیات بیشتر اگر در شرح کدها مشکلی بود به سایت اصلی که در پست اول لینکش بود مراجعه کنید. مثل معنی کامنت - کار \n و یا چگونگی اجرا کردن برنامه و غیره.
اگر يك سري از مفاهيم آنرا متوجه نمي شويد اصلا مهم نيست! در مقالات آتي تمام اين موارد مفصل توضيح داده خواهند شد.
متد استاندارد Main در اينجا قسمتي است كه عمليات اصلي برنامه در حالت Console ( شبيه به برنامه هاي تحت داس اما 32 بيتي ) در آن انجام مي شود.
بدون متد Main برنامه هاي سي شارپ قادر به اجرا نخواهند بود. نوع آن در اينجا void تعريف شده است يعني اين متد خروجي ندارد. حتي اگر برنامه هاي استاندارد ويندوز را هم بخواهيد با C# بنويسيد بازهم متد Main حضور خواهد داشت ، هر چند به صورت خودكار ويژوال استوديو آنرا توليد مي كند.

طريقه ي نوشتن توضيحات (Comments) در سي شارپ همانند C++ مي باشد يعني :


/* any comments */

ويا

// any comments

و تنها برنامه نويس براي نوشتن توضيحاتي در مورد كدهاي خود از آنها استفاده مي كند و در خروجي برنامه ظاهر نمي شوند.

نكاتي در مورد كد فوق:

- بك اسلش ان ، در زبانهاي مشتق شده از سي به معناي new line مي باشد.
- در كد فوق نحوه ي تعريف چند متغير در يك خط و حالتهاي مقدار دهي مختلف را ملاحظه مي كنيد.
- از متد ReadLine براي نگه داشتن خروجي و مشاهده ي آن در اينجا استفاده كرديم.
- عادت كنيد به صورت دندانه دار كد بنويسيد. اينكار خوانايي كد را صد برابر مي كند. در اينجا كدهاي داخل متد main ، كاملا چند دندانه از آكولادهاي باز و بسته كردن آن جلو تر هستند.
- در كد بالا در متد WriteLine اعداد و رشته ها با هم جمع شده اند! اين مورد بدليل وجود overload هاي زياد اين تابع و ... ميسر گشته است. اصلا به آن دل نبنديد! چون در آينده كامپايلر سي شارپ اگر چنين اعمالي را در جاهاي ديگري مرتكب شويد به شدت با شما برخورد خواهد كرد!! براي جمع كردن اعداد با رشته ها حتما بايد عدد به رشته تبديل گردد و بعد ... . در اين مورد در مقالات بعدي بحث خواهد گرديد.


بهتر است هنگام تعريف يك متغير ، نامي با مسما براي آن انتخاب شود تا در هنگام كار خواندن كد ساده تر گردد. همچنين رسم شده است كه نوع متغير را به صورت خلاصه به نام متغير اضافه مي كنند. براي مثال بجاي FirstName بهتر است بنويسيم strFirstName . به اين نوع نگارش Hungarian notation مي گويند.
- تمام نوع هاي پيش فرض تعريف شده در سي شارپ شيء هستند.
این سایت منبع خود را http://www.irandevelopers.com اعلام کرده.
=================
دو سئوال این پست - پست قبل سئوال نداشت.
اول اینکه تا چه زمانی مقدار اولیه ندهیم به متغیر خطا می دهد؟
دوم اینکه چرا می گویند سی شارپ نقش محوری دارد در میان بقیه زبانهای دات نت. به نقل از این سایت و خیلی سایتهای فارسی دیگر.
 
آخرین ویرایش:

saalek110

Well-Known Member
a2.jpeg

صفحه دوم این سایت:
آدرس:
http://dev.ir/articles/show.asp?id=178

آشنايي با فضاهاي نام (NameSpaces) :

فضاهاي نام روشي براي مديريت كد نويسي هستند. براي مثال آنها ايجاد شده اند تا تداخلي بين نام هاي توابع در برنامه شما رخ ندهد. اين مساله در پروژه هاي بزرگ خود را نشان مي دهد و ممكن است دو آيتم در يك پروژه نام هاي يكساني را پيدا كنند. بدين وسيله اين شانس تصادم و تداخل كاهش پيدا مي كند. براي ايجاد يك فضاي نام به صورت زير عمل مي شود:
کد:
namespace anyName 
{ 
…….. 

Class anyClassName 
{ 
………. 
} 

……. 

}
يكي از فضاهاي نام پايه اي در دات نت فريم ورك ، فضاي نام System مي باشد. براي استفاده از آن مي توان از كد زير كمك گرفت :
کد:
using System;

تمام فضاهاي نام به صورت پيش فرض public مي باشند و در خارج از كد شما قابل دسترسي هستند. روش استفاده از آنها به صورت زير است:
کد:
ProjectName.NameSpace.ClassName.MemberName
نكته :
اگر دقت كرده باشيد هنگامي كه كرسر ماوس را روي هر آيتمي در منوي autocomplete نگه مي داريد و يا آنرا انتخاب مي كنيد يك راهنماي كوچك نمايش داده مي شود كه در حقيقت كامنت مربوط به آن تابع مي باشد. روش نوشتن چنين كامنت حرفه اي كه در منوهاي ويژوال استوديو ظاهر شود به صورت زير است كه بهتر است (!) قبل از هر تابع يا خاصيت يا كلاس و .... نوشته شود
کد:
/// 
/// 
/// 
///
سالک: من وقتی ماوس را روی کلماتی مانند int یا console یا writeline نگه می دارم توضیحات مفیدی می آید ولی معنی چند جمله بالا را نفهمیدم.شاید ورژن 2003 کار می کرده و فرق داشته. من 2005 کار می کنم. اگر کسی توضیح بدهد خیلی خوبه.

= = = == = == = = = = = =
كلاس ها :

چون سي شارپ تمام سر و كارش با كلاس ها است بنابراين بايد در مورد نحوه ي تعريف و استفاده از آنها تسلط كافي داشته باشيم.

يك پروژه ي جديد console در VS.NET باز كنيد و نام آنرا در ابتدا ex03 وارد نماييد.
بعد از باز شدن پروژه ، از منوي Project گزينه ي Add class را انتخاب كنيد تا كلاسي جديد به نام clsDate.cs را اضافه نماييم. ساختار فايل ايجاد شده توسط VS.NET به صورت زير است :

سالک: وقتی یک پروژه کنسولی ایجاد کردیم این کد را داشتیم که بالای آن اسمش را نوشته به نام program.cs .(در ویژوال استودیوی 2005) .
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
حالا با رفتن به منوی پروجکت و زدن ((ادد کلاس)) یک فایل کنارش باز میشه به نام دیفالت class.cs حاوی این کد:
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
    class Class1
    {
    }
}
در سایت گفته:
تابع يا متد clsDate كه در اينجا به صورت پيش فرض ايجاد شده است اصطلاحا سازنده (constructor) نام دارد. اين تابع هر بار كه يك شيء جديد از كلاس مي سازيم به صورت خودكار اجرا مي شود.

ولی من اینجا هیچ تابعی نمی بینم. یعنی همین آخرین کد داخل کلاسش هیچ تابعی نیست. انگار با ویژوال استودیوی 2003 جریان فرق کرده.
خوب حالا ما سازنده نداریم ولی همان کارهایی که ایشان کرده را انجام می دهیم.
اول به کلاس ساخته شده که در فایل دیگری بود متد آن را می افزاییم تا به شکل زیر شود:
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
    class Class1
    {
        public string currentSystemDate
        {
            get
            {
                return System.DateTime.Today.ToString();
            }
        }
    }
}
یک متد اضافه شده به نام currentSystemDate و با return خروجی اش را برمی گرداند به هر جا که صدا زده باشند آن را.

سایت: مي خواهيم تاريخ جاري سيستم را به صورت يك خاصيت از اين كلاس دريافت کنیم. سالک: یعنی متدی به کلاس اضافه کردیم برای این کار.

سایت: خاصيتي را كه مي خواهيم از برنامه دريافت كنيم با كلمه ي كليدي get معرفي مي نماييم.

حالا کد قسمت برنامه اصلی را اضافه می کنیم:
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Class1 m_var = new Class1(); // initialize variable 
            Console.WriteLine(m_var.currentSystemDate);
            Console.ReadLine();//pause!
        }
    }
}
سالک:من هیچ اسمی را عوض نکردم. یعنی class1 همان نامی بود که برنامه پیشنهاد کرده بود. اگر شما کلاسی با نام دیگر ساخته اید به جای class1 قرار دهید. M_var هم که در سی پلاس می گفتند شی ساخته شده از کلاس. اینجا(سی شارپ) هم حتما همین طوره.
پس ما از شی m_var آمده ایم با m_var.currentSystemDate یک متد شی را فراخوانده ایم. یعنی چاپ کرده ایم خروجی آن را.

توضیحات سایت در این مورد:
توضيح كد فوق :

براي استفاده از يك كلاس بايد يك متغير از آن را تعريف كنيم. در هر زباني يك سري نوع هاي استاندارد مانند int و string و غيره وجود دارند. كلاس هم در حقيقت يك نوع داده ي بسيار بسيار قدرتمند به شمار مي آيد. براي تعريف يك متغير از نوع جديد روش كار مانند سابق است. براي مثال زماني كه يك متغير عدد صحيح را تعريف مي كنيد به صورت زير عمل مي شود :

int i=0;

راي تعريف يك متغير از نوع داده اي كه خودمان تعريف كرده ايم نيز بايد به همين صورت عمل شود.
کد:
clsDate m_var = new clsDate();
از كلمه ي كليدي new اينجا به صورت استاندارد براي مقدار دهي اوليه به اين متغير جديد استفاده مي نماييم.

سپس به روش دستيابي به اين خاصيتي كه به كلاس اضافه كرده ايم مي رسيم.

m_var.currentSystemDate

كلا چه يك خاصيت و يا يك متد را به كلاس اضافه نماييم براي دستيابي به آن از عملگر نقطه پس از ذكر نام متغير تعريف شده از نوع كلاس خود ، استفاده مي نماييم. براي استفاده از خاصيت ها نيازي به آوردن () بعد از ذكر نام خاصيت نمي باشد.

عموما از خاصيت ها براي برگرداندن و يا تنظيم يك مقدار ساده استفاده مي شود و در آنها عمليات پيچيده اي مد نظر نمي باشد.

توضيحي در مورد ; () System.DateTime.Today.ToString
استفاده از خواص :

شما به ويژگي هاي يك شيء با استفاده از خواص آن مي توانيد دسترسي پيدا كنيد. يك property عضوي است كه امكان دسترسي به ويژگي شيء يا كلاس را فراهم مي كند. براي مثال طول يك رشته (string) ، سايز يك فونت ، عنوان يك فرم و نام يك مصرف كننده ، خاصيت هستند .
بسياري از اشياء ذاتي دات نت فريم ورك ، خواص مفيد زيادي را به همراه دارند. براي مثال شيء DateTime را در نظر بگيريد. با استفاده از خاصيت Today آن مي توان تاريخ جاري سيستم را بدست آورد. براي استفاده از يك خاصيت لازم است تا كلاس تعريف كننده شيء در برنامه مهيا باشد. منظور همان استفاده از فضاي نام مربوطه مي باشد. پس از وارد كردن فضاي نام كلاس مورد نظر مي توانيد از شيء و خواص آن استفاده كنيد. دو راه وجود دارد يا به صورت كامل تمام موارد بايد ذكر شوند مانند System.DateTime.Now; و يا با وارد كردن فضاي نام System كوتاه سازي صورت مي گيرد.
براي استفاده از هر متد و يا شيء ايي در سي شارپ بايد اين شيء قابل دسترسي باشد. براي مثال شيء Console كه از آن براي چاپ كردن خروجي بر روي صفحه ي نمايش استفاده مي كنيم در فضاي نام System واقع شده است. يا بايد در ابتداي برنامه ذكر كرد using System ; و سپس خيلي راحت از اين شيء استفاده كرد و يا مي توان اينكار را انجام نداد و نوشت : System.Console و الي آخر. با ذكر فضاي نام در ابتدا با استفاده از using مي توان خلاصه نويسي كرد.

البته برنامه ساده بالا نیاز به ساخت کلاس نداشت و خیلی ساده می شد با کد زیر(ساخت یک پروژه و دو خط کد):

کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(System.DateTime.Today.ToString());
            Console.ReadLine();//pause!
        }
    }
}

به همان نتیجه رسید ولی اینجا می خواسته طرز ساخت کلاس و استفاده از آن را آموزش دهد.
 
آخرین ویرایش:

saalek110

Well-Known Member
a3.jpeg

می رویم صفحه سوم: مقدمه اي بر سي شارپ : قسمت سوم
http://dev.ir/articles/show.asp?id=179

در بسياري از موارد هنگام برنامه نويسي لازم است تا از عبارات شرطي استفاده كنيم. براي انجام اينكار دو روش عمده وجود دارد. استفاده از if و يا switch . از if بيشتر براي مقايسه هايي تكي و كوچك استفاده مي شود و حاصل مقايسه ي آن يا true است و يا false . از عبارت switch هنگامي استفاده مي شود كه مقايسه هاي متعددي بايد در مورد يك مقدار صورت گيرد.
هر دو عبارت if و switch توسط عبارتهايي Boolean كنترل مي شوند ( true و يا false ) . در هنگام استفاده از if اگر عبارت Boolean حاصل اش true باشد اولين قسمت شرط اجرا مي شود و سپس برنامه از انتهاي if ادامه پيدا مي كند. اگر حاصل عبارت Boolean مساوي false باشد كنترل برنامه به قسمت else منتقل مي شود.
مثال :

يك پروژه ي جديد console باز كنيد و نام آنرا ex04 بگذاريد. سپس كد زير را در آن وارد و جرا كنيد :
سالک : من نام ندادم و هر چی ویژوال استودیو اسم گذاشته قبول کردم یعنی ConsoleApplication4

کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter 1 character to be evaluated");

            char cUserInput = (char)Console.Read();

            if (char.IsDigit(cUserInput) )
            {
                Console.WriteLine("The char is a number!");
                Console.ReadLine();//pause!
            }
                else
            {
                Console.WriteLine("The char is not a number!");
                Console.ReadLine();//pause!
            }
            Console.ReadLine();//pause!
        }
    }
}

سالک: 3 تا Console.ReadLine من اضافه کردم و کروشه های دورشان را . شاید کارم درست نباشه . فقط خواستم زود اجرا بشود . شرط در سی پلاس هم هست و نیازی به بحث نیست. تابع IsDigit قابل توجه است که از امکانات آماده سی شارپ است. در سی پلاس چیزی با این عنوان من ندیدم. در محیط ویژوال استودیو روی این کلمه و کلمه char قبل از آن اگر ماوس را نگه دارید اطلاعات خوبی می دهد.
سئوال : آیا این ها همان سلسله مراتب ساختارهای کلاس های دات نت است؟ بی زحمت راهنمایی کنید.

نکات خود سایت:
نكاتي در مورد كد فوق :

1- سي شارپ به كوچكي و بزرگي حروف حساس است . براي مثال cUserInput با cUserinput فرق مي كند.
2- حتما بايد بعد از if پرانتزها ذكر گردد.
3- حتما بايد داخل if يك عبارت Boolean ذكر شود مانند if(x>5) .
4- در سي شارپ مقايسه ي تساوي دو عبارت با == و انتساب با = انجام مي شود. ( موارد 1 و 4 مواردي هستند كه اغلب تازه كاران با آن مشكل دارند! ) براي مثال if(i==3) صحيح است اما if(i=3) در سي شارپ معنايي ندارد.
5- اگر بعد از if يك خط كد قرار گيرد نيازي به آوردن آكولاد ها نيست. هنگامي نياز به آكولادها مي باشد كه بيش از يك خط بايد بعد از if قرار گيرد.
6- در سي شارپ همانند اسلاف خودش براي تبديل نوع هاي داده ايي مي توان به صورت زير نيز عمل كرد : (char) Console.Read() ; يعني دريافتي Read به char تبديل مي شود .در اين مورد باز هم صحبت خواهد شد.
7- همانطور كه ذكر شد در سي شارپ همه چيز شيء است حتي نوع هاي پايه ايي مانند char . با استفاده از متد IsDigit آن مي توان چك كرد كه آيا ورودي آن عدد است يا خير؟ ( در مورد متدها صحبت خواهد شد )

استفاده از switch :

بهتر است اين مورد را با يك مثال دنبال كنيم.
پروژه ي سي شارپ جديدي به نام ex05 در حالت console در VS.NET باز كنيد. دراينجا مي خواهيم يك كلاس جديد تعريف كرده و توسط خاصيتي كه در آن ايجاد مي كنيم متوجه شويم روز جاري مطابق سيستم چه روزي است .
يك كلاس جديد از منوي پروژه ،‌با استفاده از گزينه ي Add class به برنامه اضافه كنيد و نام آنرا در ابتدا clsDate بگذاريد.سالک: من باز اسمی ندادم و همان class1 را قبول کردم.
داخل کلاس این کد را اضافه کنید:
کد:
  public string systemDayOfWeek
        {
            get
            {

                string res = "";
                switch (System.DateTime.Now.DayOfWeek.ToString())
                {
                    case "Saturday":
                        res = "شنبه";
                        break;

                    case "Sunday":
                        res = "يک شنبه";
                        break;

                    case "Monday":
                        res = "دوشنبه";
                        break;

                    case "Tuesday":
                        res = "سه شنبه";
                        break;

                    case "Wednesday":
                        res = "چهار شنبه";
                        break;

                    case "Thursday":
                        res = "پنج شنبه";
                        break;

                    case "Friday":
                        res = "جمعه";
                        break;
                }

                return res;
            }
        }
جمعا کلاس این میشه فایلش:
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication5
{
    class Class1
    {
        public string systemDayOfWeek
        {
            get
            {

                string res = "";
                switch (System.DateTime.Now.DayOfWeek.ToString())
                {
                    case "Saturday":
                        res = "شنبه";
                        break;

                    case "Sunday":
                        res = "يک شنبه";
                        break;

                    case "Monday":
                        res = "دوشنبه";
                        break;

                    case "Tuesday":
                        res = "سه شنبه";
                        break;

                    case "Wednesday":
                        res = "چهار شنبه";
                        break;

                    case "Thursday":
                        res = "پنج شنبه";
                        break;

                    case "Friday":
                        res = "جمعه";
                        break;
                }

                return res;
            }
        }
    }
}


هنگام ذخيره كردن اين كد ويژوال استوديو به شما اخطار مي دهد كه كد داراي حروف يونيكد است. از منوي فايل گزينه ي advanced save options را انتخاب كنيد. در اينجا مي توان نوع ذخيره سازي را يونيكد انتخاب كرد.

فایل اصلی هم میشه این:
کد:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            Class1 m_var = new Class1();
            Console.WriteLine(m_var.systemDayOfWeek);
            Console.ReadLine();
        }
    }
}
برای من هنوز علامت سئوال می آید به جای نوشته ها موقع سئوالش yes را زدم(شرح علت خط های پایین تر). سئوال یونیکد را. باز هم برنامه من بی مکث پرید بیرون ولی دیگه دستکاری اش با شما. باید کار بشه روی آن.

توضیحات سایت:
هر چند حالت console يونيكد را پشتيباني نمي كند ولي اصل برنامه براي ما مهم است و در آينده بيشتر از آن استفاده خواهيم كرد.

همانطور كه ملاحظه كرديد اگر از switch استفاده نمي شد بايد از 7 عدد if ‌استفاده مي گرديد كه اصلا ظاهر حرفه اي و شكيلي نداشت!
با استفاده از عبارت زير كار مقايسه شروع مي شود. روز سيستم در يافت شده و وارد بدنه ي switch مي گردد. سپس توسط case ها چك مي شود تا تساوي آن با عبارت بعد از case به اثبات برسد.

switch( System.DateTime.Now.DayOfWeek.ToString())

اگر هر كدام از عبارات بعد از case صحيح بودند كار پس از آن كه در اينجا انتساب است انجام شده و سپس توسط break كنترل برنامه از switch خارج مي شود و ادامه ي كار دنبال مي گردد.
اگر هيچكدام از case ها صحيح نبودند مي توان از گزينه ي default هم در صورت نياز استفاده كرد. اين حالت در يك چنين مواقعي اجرا مي گردد.

نقل از تاپیک یونیکد:
http://forum.majidonline.com/showthread.php?t=62170
یونی کد چیست ؟

حتما این روزها کلمه Unicode بارها به گوشتان خورده و یا در وب سایت ها و برنامه های کاربردی جدید آن را دیده اید و میخواهید بدانید که Unicode چیست. همینطور که حتما میدانید کامپیوتر فقط با عدد و رقم سرکار دارد و تمام اطلاعات نوشتاری,صوتی و تصویری نهایتا بصوت اعداد و ارقام در کامپیوتر ذخیره و پردازش میشوند .خوب حالا ما برای اینکه بتوانیم اطلاعات نوشتاری خودمان را برای کامپیوتر قابل فهم کنیم مجبوریم تا به هر حرف از حروف الفبا, یک کد عددی اختصاص بدهیم. از این رو صدها نوع سیستم کد گذاری به وجود آمده و برای زبانهای مختلف سیستم های مختلف معرفی شده.این مسئله در مورد زبان رسمی ایران یعنی فارسی هم صادق بود و تازه هر شرکت نرم افزاری ایرانی هم یک سیستم کد گذاری مخصوص خودش را داشت و دارد و هیچ وقت یک سیستم کد گذاری استاندارد برای زبان فارسی بوجود نیامد که همه برنامه نویسها از آن استفاده کنند.این مسئله در مورد زبان های دیگر هم وجود داشت.تا اینکه بالاخره Unicode معرفی شد.یونی کد نه یک نوع فونت خاص است نه یک برنامه خاص بلکه یک استاندارد کد گذاری برای حروف الفباست مانند ANSI. یونی کد به همه ی حروف اعداد یکتایی مستقل از محیط سیستم عامل و برنامه و زبان اختصاص میدهد.این سیستم میتواند تمام حروف زبانهای مختلف زنده امروز دنیا را در خودش جای دهد و به هر کدام از این حروف کد یکتایی اختصاص دهد. بکار گیری Unicode در وب سایت ها و برنامه های Clint -Server میتواند بسیار مفید باشد و ما نگران این نیستیم که کاربران وب سایت از چه سیستم عامل و از چه مرورگر اینترنتی استفاده میکنند فقط باید از استاندارد Unicode پشتیبانی کند.امروزه بسیاری از شرکتهای پیشتاز دنیای کامپیوتر این استاندارد را پذیرفته اند و تقریبا تمامی برنامه های کاربردی جدید از این سیستم کد گذاری حمایت میکنند مثلا از سیستم عامل Windows me به بعد یعنی Windows 2000,windows xp و windows server.net تماما بر مبنای Unicode بنا شده اند و سیستم عامل های دیگر مثل MacOs و Solaris و چندین سیستم عامل دیگر هم از Unicode حمایت میکنند.برنامه کاربردی نیز مانند Office2000وOffice Xp بطور کامل از این استاندارد پشتیبانی میکنند. و شما میتوانید با استفاده از Front Page Xp یا Front Page 2000 یا Visual Studio.net صفحات وب فارسی ایجاد کنید.
برای گسترش و ترویج استاندارد Unicode یک کنسر سیوم ایجاد شده است. در حال حاضر این سازمان نسخه جدید Unicode را یعنی Unicode 3.2.0 را منتشر کرده است.
استفاده از Unicode در حال افزایش است و برنامه ها و وب سایت های آینده تماما از این استاندارد استفاده خواهند کرد.این مسئله برای ما فارسی زبانها نیز موقعیت مناسب ایجاد کرده و میتوانیم در عرصه اینترنت مطالب خود را به زبان فارسی بدون استفاده از روش های مثل ایجادفایلهای تصویری از متن و قرار دادن آن درصفحه وب و یا استفاده از کدگذاری زبانهای دیگر مانند زبان تازی(عربی) عرضه کنیم.این مسئله فرایند ایجاد وب سایت ها و برنامه های فارسی را بسیار آسان تر و کم هزینه تر کرده.
این وب سایت هم(RastiSoft) از Unicode برای پیاده سازی زبان فارسی استفاده کرده و برای نمونه شما در صفحه تماس باما میبینید که بدون نیاز به دریافت برنامه خاصی مثلا یک اپلت جاوا یا یک ActiveX , براحتی می توانید مطلب خود را به زبان فارسی تایپ کنید. بنابراین اگر قصد دارید که یک وب سایت و یا یک وب لاگ فارسی شخصی ایجاد کنید پیشنهاد میکنم که حتما از استاندارد Unicode استفاده کنید.
 
آخرین ویرایش:

saalek110

Well-Known Member
قسمت چهارم : آرایه ها در سی شارپ
http://dev.ir/articles/show.asp?id=180

هنگامي آرايه ها ايجاد مي شوند كه بخواهيم با مجموعه اي از اطلاعات همجنس كار كنيم. براي نمونه از يك آرايه براي ذخيره تعدادي كاراكتر مي خواهيم استفاده نماييم. آرايه ها هم يك نوع متغير هستند پس بايد تعريف و مقدار دهي اوليه شوند ، نوع و تعداد اعضاي آنها نيز بايد معين گردد.
فرض كنيد 10 داده ي هم جنس داريم ( براي مثال رشته (string) ) و مي خواهيم آنها را ذخيره كنيم. يا مي توان 10 متغير مختلف را تعريف كرد و سپس تك تك آنها را مقدار دهي نمود و يا يك آرايه تعريف نمود و سپس در خانه هاي مختلف آن اين ده عضو را چيد. اين مطلب زماني حائز اهميت مي شود كه داده هاي همجنس و به نوعي مرتبط ما تعداد زيادي داشته باشند.

براي تعريف آرايه چندين راه مختلف وجود دارد :
براي تعريف آرايه ابتدا نوع آنرا مشخص مي كنيد سپس [] را بايد جلوي تعريف نوع بگذاريد اين دستور زبان است و چون چرا ندارد! در زبان سي كمي متفاوت بود. اين كروشه ها بعد از نام متغير مي آمدند. و سپس در اينجا نام يك متغير را كه بعدا به آن ارجا مي دهيم خواهيد گذاشت. براي مثال

کد:
int[] table; // not int table[];

حد پايين آرايه صفر بوده براي مثال اگر آرايه chrData[] ده عضو داشته باشد، اولين عضو آن chrData[0] و آخرين عضو آن chrData[9] است.
مطلب ديگري كه در مورد آرايه ها خيلي مهم است اندازه ي آن است. يعني يك آرايه حاوي چند خانه ي خالي است كه ما اجازه داريم آنرا پر كنيم. مثال :

کد:
int[] numbers; // declare numbers as an int array of any size 
numbers = new int[10]; // numbers is a 10-element array 
numbers = new int[20]; // now it's a 20-element array
1- تعريف آرايه اي از رشته ها و مقدار دهي اوليه آن.

کد:
String[] strData = new string[2];
2- تعريف و مقدار دهي اوليه

کد:
string [] strData = { "1234","abcd" };
كه آرايه اي از نوع رشته اي به طول 2 عضو با مقدار دهي اوليه ايجاد شده است. در اين حالت نيازي به تعيين طول آن نمي باشد.

3- روشي ديگر براي مقدار دهي اوليه

کد:
strData[0] = "1234"; 
strData[1] = "abcd";

مثال: یک پروژه کنسولی باز کنید و کد زیر را به آن اضافه کنید:
کد:
string[] sGoalList = new string[3]; 
string sReplyStatement = "You have choosen Goal '"; 

// Store goals in the array 
sGoalList[0] = "Hike the Appalachian Trail"; 
sGoalList[1] = "Run the marathon"; 
sGoalList[2] = "Give $1 million to worthwhile causes"; 

// Store response to goals in the array 
//(declaring and initializing on same line) 
string[] sGoalResponse = { 
"If you are staring from GA, you should get " 
+ "started in early spring, so you will "+ 
"not get caught in snow.", 
"Make sure that you have a good pair of shoes.", 
"Start saving as soon as possible."}; 

// Give the user a list of goals to choose from 
Console.WriteLine("GOAL LIST"); 

for(int i = 0; i < sGoalList.Length; i++) 
{ 
Console.WriteLine("Goal " + i + 
" - " + sGoalList[i]); 
} 


// Request the user to choose a goal. 
Console.WriteLine (""); // Write an empty line for space 
Console.Write("Please choose the number of the " 
+ "goal that you want to achieve [0,1,2]: "); 

Console.ReadLine();
سالک: با توجه به سینتکس های بالا شرح نیاز ندارد.
شرح سایت:
نكاتي در مورد كد فوق :
1- نحوه ي استفاده از عملگر + را براي اتصال رشته هاي بلند در كد فوق مي توان ديد.
2- در سي شارپ پايان خط سمي كولون مي باشد. بنابراين نگراني در مورد چند خطي شدن يك دستور وجود ندارد.
3- هنگامي كه آرايه اي را با مقادير درون آكولادها ، مقدار دهي اوليه مي كنيد لزومي ندارد طول آن آرايه را مشخص كنيد ؛ مانند آرايه sGoalResponse در بالا. در غير اينصورت حتما بايد طول يك آرايه را كه معرف تعداد خانه هاي خالي آن است ، معرفي كنيد مانند آرايه sGoalList .
4- فعلا حلقه ي for را در اين مثال بخاطر داشته باشيد تا در مقاله ي بعدي راجع به آن صحبت كنيم
 
آخرین ویرایش:

saalek110

Well-Known Member
قسمت پنجم: حلقه ها در سی شارپ
http://dev.ir/articles/show.asp?id=181

مقدمه :

اگر نياز باشد تا قطعه اي از كد بيش از يكبار اجرا شود نياز به استفاده از حلقه ها مي باشد. براي مثال فرض كنيد آرايه اي به طول 1000 تعريف كرده ايد. اكنون مي خواهيد آنرا با هزار عدد متوالي پركنيد. بديهي است كه روش زير كارآمد نيست! :
کد:
int[] intData = new int[1000]; 
intData[0]=0; 
. 
. 
. 
intData[999]=1000;
نوشتن اين خطوط متوالي احتمالا با كپي و پيست و اصلاح آن حداقل نيم ساعت طول مي كشد! بنابراين نياز به وسيله اي حس مي شود كه بتوان بوسيله ي آن امثال اينگونه كارها را انجام داد.

تعريف حلقه ها و استفاده از آنها :

براي تعريف حلقه ها ابزارهاي متعددي مانند while, do , for , foreach وجود دارند. استفاده و انتخاب آنها بستگي به سليقه ي شما و منطق برنامه دارد. در هر حال يك مساله بديهي است كه همواره بيش از يك راه حل براي يك مساله وجود خواهد داشت.

استفاده از حلقه ي for :

عموما كدنويسي را با كد نويسي مي توان آموخت! بنابراين در مورد انواع حلقه ها مثالهايي ارائه خواهد گرديد.

یک پروژه کنسولی ایجاد کنید و کد زیر را به آن اضافه کنید:
کد:
int[] intData = new int[1000]; 

for (int i=0 ; i<1000 ; i++ ) 
intData[i]=i; 


for(int i=0 ; i< intData.Length ; i++) 
{ 
int j = intData[i]; 
Console.WriteLine("intData[" + i + "]=" + j); 
} 

Console.ReadLine();

سالک: ابتدا یک آرایه تعریف شده با 1000 خانه.
بعد با حلقه ای آن را پر کرده
و بعد با حلقه ای آن را چاپ کرده.

شرح سایت:
توضيحاتي در مورد كد فوق :
1- براي تعريف حلقه ي for همانطور كه مي بينيد بايد تعداد بار اجراي حلقه ( اينجا از 0 تا 999 است ) و همچنين نحوه ي رسيدن از 0 به 1000 را مشخص كرد ( در اينجا i++ است يعني هر بار يك واحد به شمارشگر حلقه اضافه مي شود. )
2- در زبان سي i++ يعني i=i+1 و i-- يعني i=i-1 و كلا i-=n يعني i=i-n و به همين ترتيب. براي مثال i*=n يعني i=i*n و i+=n يعني i=i+n و ...
3- اگر پس از حلقه ي for يك خط كد داشته باشيم نيازي به آكولاد نيست (مانند قسمت اول كد). ولي اگر تعداد خطوط مربوط به بدنه ي for زياد بود بايد حتما از آكولاد استفاده شود (مانند قسمت دوم كد). (اين قاعده اي كلي است در زبانهاي مشتق شده از زبان سي در مورد هر چيزي!)
4- فرض كنيد در قسمت اول كد بالا بجاي 1000 مي نوشتيد 1001 . سريعا با يك خطاي زمان اجرا مواجه مي شديد. زيرا مي خواستيد به عضوي از آرايه دسترسي پيدا كنيد كه تعريف نشده است. راه مدرن چك كردن اين مسائل استفاده از خاصيت Length آرايه است كه در قسمت دوم كد در عمل مشاهده مي نماييد. هميشه از اين روش استفاده كنيد.
5- حلقه ي اول يعني اينكه كار پر كردن آرايه intData را از صفر تا 999 يكي يكي (i++) انجام بده.

استفاده از حلقه while :

داخل یک پروژه کد زیر را بیافزایید:
کد:
 int n = 1; 

while (n < 6) 
{ 
Console.WriteLine("Current value of n is {0}", n); 
n++; 
} 

Console.ReadLine();;

شرح سایت:
توضيحاتي در مورد كد فوق :
1- حلقه ي while در بالا كار انجام حلقه را تا هنگامي انجام مي دهد كه شرط ذكر شده در ابتداي آن صادق و برقرار باشد. يعني در حلقه ي فوق تا وقتي n<6 است اين حلقه ادامه خواهد يافت.
2- حلقه ي while صفر يا بيشتر بار ممكن است اجرا شود.
3- در كد فوق از {0} استفاده گرديده است. متد WriteLine به شما اين اجازه را مي دهد كه n تا آرگومان براي آن تعريف كنيد و مقادير هر كدام را كه خواستيد در كد نمايش دهيد از {x} استفاده كنيد. در اين مورد مقدار آرگومان x ام نمايش داده مي شود.

استفاده از حلقه do :
در یک پروژه کد زیر را بیافزایید:
کد:
int x; 
int y = 0; 

do 
{ 
x = y++; 
Console.WriteLine(x); 

}while(y < 5); 

Console.ReadLine();

شرح سایت:
توضيحاتي در مورد كد فوق :
1- اين حلقه به حلقه ي do…while معروف است و هر دو جزء آن بايد ذكر گردد.
2- اين حلقه تا زماني كه شرط ذكر شده در قمست while صحيح است ادامه مي يابد.
3- اين حلقه در ابتداي كار بدون توجه به قسمت while حداقل يكبار اجرا مي شود. (مثال زير را اجرا نماييد)
کد:
int n = 10; 
do 
{ 
Console.WriteLine("Current value of n is {0}", n); 
n++; 
} while (n < 6);
استفاده از حلقه foreach :
کد زیر را به یک پروژه اضافه کنید:
کد:
int odd = 0, even = 0; 
int[] arr = new int [] {0,1,2,5,7,8,11}; 

foreach (int i in arr) 
{ 
if (i%2 == 0) 
even++; 
else 
odd++; 
} 

Console.WriteLine( 
"Found {0} Odd Numbers, and {1} Even Numbers.", 
odd, even) ; 

Console.ReadLine();
شرح سایت:
توضيحاتي در مورد كد فوق :
1- از foreach براي حركت در بين اعضاي يك آرايه (مانند مثال بالا) و يا مجموعه ايي از اشياء استفاده مي شود (روشي شكيل ، مدرن و مطمئن! و تقريبا به ارث رسيده از ويژوال بيسيك!!).
2- در زبانهاي مشتق شده از C ، عملگر % ، باقيمانده را محاسبه مي كند.
3- در كد فوق با استفاده از حلقه ي foreach تك تك اعضاي آرايه در مورد زوج و يا فرد بودند مورد بررسي قرار گرفته اند و تعداد اعضاي زوج و فرد در آخر نمايش داده مي شود
 
آخرین ویرایش:

saalek110

Well-Known Member
قسمت ششم:
http://dev.ir/articles/show.asp?id=182

دو مورد تكميلي در مورد حلقه ها در سي شارپ :

1- هر جايي خواستيد به هر دليلي حلقه را پايان دهيد مي توانيد از دستور break; استفاده كنيد. در اين حالت به صورت آني حلقه خاتمه يافته و كدهاي ادامه ي برنامه پس از حلقه اجرا مي شوند.
2- نحوه ي استفاده از دستور continue : فرض كنيد حلقه ي شما در راند 15 خودش است! حالا در اين راند شما مي خواهيد يك سري از دستورات درون حلقه اجرا نشوند و حلقه به راند بعدي منتقل شده و كارش را ادامه دهد. اينجا است كه از دستور continue استفاده مي شود. بهتر است به يك مثال ساده در اين زمينه توجه كنيم.

کد زیر را در یک پروژه قرار دهید:
کد:
Console.WriteLine( 
"for (int i = 1; i <= 100; i++) -> break at i==5" ); 
for (int i = 1; i <= 100; i++) 
{ 
if (i == 5) 
break; 
Console.WriteLine(i); 
} 
Console.ReadLine(); 


Console.WriteLine( 
"for (int i = 1; i <= 10; i++) -> continue if i<9" ); 
for (int i = 1; i <= 10; i++) 
{ 
if (i < 9) 
continue; 
Console.WriteLine(i); 
} 
Console.ReadLine();
سالک: برنامه بالا را من اجرا کردم. در حلقه اولی وقتی به عدد 5 می رسد چاپی صورت نمی گیرد. طبق توضیحات بالا باید از حلقه با break خارج شه باشد.
در حلقه دومی وقتی اعداد کوچکتر از 9 است با continue داخل حلقه به پله بعدی می پرد . یعنی اعداد زیر 9 چاپ نمی شود.
یعنی بریک کل حلقه را خاتمه می دهد و کانتینیو یک چرخش حلقه را خاتمه می دهد و به چرخش بعدی می پرد.

---------------------------------------
ادامه صفحه ششم:

موارد تكميلي مربوط به رد و بدل كردن مقادير به/از كلاس ها :

در قسمت بعدي مي خواهيم خاصيتي را تعريف كنيم كه يك مقدار را از كاربر مي گيرد و در برنامه مي توان توسط قسمت هاي ديگر از آن استفاده كرد.

ابتدا يك متغير عمومي بايد در سطح كلاس تعريف كرد تا مقدار دريافت شده توسط set را در خود نگاه داري كند (در مورد scope متغيرها ( متغيرهاي عمومي و محلي و امثال اينها) در هنگام معرفي توابع بيشتر بحث خواهد شد) . سپس از طريق كلمه ي كليدي value مقدار دريافت شده به متغير انتساب مي يابد و چون در سطح كلاس عمومي است در تمام كلاس قابل درسترسي است.

باز هم یک پروزه می سازیم و یک کلاس اضافه می کنیم.

کد زیر را به کلاس اضافه کنید:
کد:
private int Year; 


public int setYear 
   { 
  set 
     { 
    Year = value; 
     } 
   } 

public bool IsLeapYear 
   { 
  get 
     { 
return System.DateTime.IsLeapYear(Year); 
     } 
   }
و کد زیر را به برنامه اصلی:
کد:
Class1 m_var = new Class1();

            m_var.setYear = 1990;

            if (m_var.IsLeapYear)
                Console.WriteLine("1990 is a leap year.");
            else
                Console.WriteLine("1990 is not a leap year.");

            Console.ReadLine();

توضيحاتي در مورد كد فوق:

1- نحوه ي تعريف متغير از يك كلاس جزو اساسي ترين قسمت هاي كار با يك كلاس محسوب مي شود كه در قسمت هاي پيشين نيز معرفي گرديد.
2- هنگامي كه از if استفاده مي كنيم لزومي ندارد حتما بنويسيم m_var.IsLeapYear==true . همين كه اين خاصيت ذكر مي شود در وهله ي اول true بودن آن چك خواهد شد.
3- نحوه ي مقدار دهي به يك خاصيت را هم در كد فوق ملاحظه مي نماييد. در هنگام استفاده از خاصيت ها نيازي به آوردن پرانتزها () در مقابل نام آنها وجود ندارد.
4- براي مرور ، نحوه ي معرفي خاصيت ها با get نيز بيان گرديد. با استفاده از set و get مي توان به كلاس ها ، مقادير متغيرها را پاس كرد و يا مقداري را دريافت نمود.
 
آخرین ویرایش:

saalek110

Well-Known Member
ممنون آقا نوید. شما خیلی لطف دارید.

-------------------------------------------

من قصد داشتم شش درس قبلی را مرور کنم ولی سایت دیگری هست که آن هم آموزش از ابتدای سی شارپ است که نکاتی را از آن نقل می کنم. شاید بعضی قسمتها تکراری باشد. همچنین کدهایی اگر داشت را شاید من تست نکنم چون فقط موضوع مهم برای من نقل نکاتش است. آدرس سایت:
http://csharp-persian.netfirms.com/C_Sharp_List.htm

آموزش زبان #C
مفاهيم اوليه زبان #C : فهم ساختار پايه‌اي يك برنامه در #C، آشنايي با Namespace، آشنايي با كلاس و ....
متغيرها، عبارات و عملگرها : آشنايي با متغيرها، آشنايي با انواع پيش فرض زبان، آشنايي با عبارات، آشنايي با رشته‌ها، آشنايي با آرايه‌ها و ....
دستورالعمل‌هاي كنترلي - شرطي : آشنايي با دستور if ، آشنايي با دستور switch و break ، آشنايي با دستور goto و ....
دستورالعمل‌هاي كنترلي - حلقه‌ها : آشنايي كلي با حلقه‌ها - حلقه while - حلقه do while - حلقه for و foreach و ....
متدها : ساختار يك متد، انواع متدها، ايجاد نمونه جديد از اشياء، انواع پارامترهاي متد، فراخواني متد، آشنايي با كلمه كليدي this و ....
Namespaces : آشنايي با Namespace - هدايتگر using - هدايتگر alias - اعضاي يك Namespace و ....
كلاسها : درك كاملتر كلاسها، سازنده و تخريب كننده در كلاسها ، اعضاي كلاس و ....
ارث‌بري كلاسها : پياده‌سازي كلاس پايه ، كلاسهاي مشتق شده، مقدار دهي كلاس پايه، فراخواني اعضاي كلاس پايه، پنهان سازي اعضاي كلاس
چند ريختي Polymorphism : آشنايي با مفهوم چند ريختي، متد‌هاي مجازي، Override كردن متدها، استفاده از چندريختي در برنامه‌ها و ....
ويژگيها (Properties) : موارد استفاده، پياده‌سازي و ايجاد property، ايجاد property هاي فقط خواندني و فقط نوشتني و ....
انديكسر (Indexer) : پياده‌سازي انديكسر، سرريزي انديكسر، انديكسرهاي چند پارامتري، نكات پيشرفته درباره انديكسرها و ....
ساختارها (Structures) : ساختار چيست؟، پياده‌سازي و استفاده از يك ساختار، تفاوت ساختار و كلاس و ....
واسطها و رابطها (Interfaces) : مفهوم كلي واسطها، تعريف يك واسط، استفاده از interface، پياده‌سازي ارث‌بري در واسطها و ....
رخداد (Event) و delegate : درك مفهوم delegate، رخداد چيست؟ پياده‌سازي رخدادها و delegate ها و ....
Exception Handling : درك مفهوم استثناء و چگونگي برخورد با آن، بررسي بلوكهاي try/catch براي مقابله با استثناء و بلوك finally ....
صفتها (Attribute) : صفتها چه هستند و چگونه از آنها استفاده مي‌كنيم، پارامترهاي صفتها و انواع آنها، ساخت صفتهاي شخصي و ....
انواع شمارشي (Enum) : انواع شمارشی چه هستند، چگونه توليد شده و چگونه مورد استفاده قرار می گيرند، موارد استفاده از آنها و ....
Overload کردن عملگرها : در اين بحث با نحوه Overload کردن عملگرها آشنا خواهيد شد.
ساختمان داده‌ها در سي شارپ (1) : در اين بحث با مفاهيم اوليه ساختمان داده آشنا مي‌شويد. همچنين به معرفي ساختمان داده‌هاي مهم و رايج نظير آرايه و ليست نيز پرداخته شده است.

درس اول : آغاز كار با C#



در اين درس با ارائه چند برنامه و مثال ساده به طرز كار زبان C# مي‌پردازيم. اهداف اين درس عبارتند از :
فهم ساختار پايه‌اي يك برنامه C#
آشنايي با Namespace
آشنايي با كلاس (Class)
آشنايي با عملكرد متد Main()
آشنايي با ورودي/خروجي يا I/O



ليست 1-1، يك برنامة ساده با عنوان Welcome در زبان C#
کد:
// Namespace اعلان

using  System;

 

// كلاس آغازين برنامه

class WelcomeCSS

  {

   // آغاز كار اجراي برنامه

   public static void Main()

    {

     // نوشتن متن در خروجي

     Console.WriteLine("Welcome to the C# Persian Tutorial!");

    }

  }
برنامة ليست 1-1 داراي 4 پارامتر اصلي است، اعلان Namespace، كلاس، متد Main() و يك دستور زبان C#.

در همين جا بايد به يك نكته اشاره كنم، براي زبان C# همانند بيشتر زبانهاي برنامه‌سازي دو نوع كامپايلر وجود دارد. يك نوع كامپايلر كه به كامپايلر Command Line معروف است و نوع ديگر كامپايلر Visual است. كامپايلر‌هاي Command Line محيطي شبيه به محيط DOS دارند و با دادن يك سري دستورات به اجرا در مي‌آيند. كامپايلرهاي Visual محيطي همانند ويندوز دارند كه با دارا بودن محيط گرافيكي و ابزارهاي خاص، برنامه‌نويس را در امر برنامه‌سازي كمك مي‌كنند. از نمونه‌هاي هر يك از كامپايلرها، مي‌توان به Microsoft C# Command Line Compiler كه يك كامپايلر Command Line و Microsoft Visual C# كه يك كامپايلر Visual است، اشاره كرد. البته در حال حاضر بيشتر از كامپايلرهاي ويژوال استفاده مي‌شود.

علاً براي اجراي برنامه‌ها مي‌توانيد از Visual Studio.Net استفاده كنيد. پس از نصب آن، وارد محيط C# شده و در قسمت انتخاب برنامة جديد گزينة Console را جهت اجراي برنامه‌ها انتخاب نماييد.

راي اجراي كد بالا در صورتيكه از محيط ويژوال استفاده مي‌كنيد بايد بر روي دكمة Run كليك كنيد و در صورتيكه كامپايلر Command Line داريد با دستور زير مي‌توانيد برنامه را اجرا كنيد :
کد:
csc Welcome.cs
پس از اجراي برنامه، كامپايلر براي شما يك فايل قابل اجرا(Executable) تحت نام Welcome.exe توليد مي‌كند.

نكته : در صورتيكه از Visual Studio.Net(VS.Net) استفاده كنيد، پس از اجراي برنامه، يك صفحه براي نمايش خروجي به سرعت باز شده و بسته مي‌شود و شما قادر به ديدن خروخي نخواهيد بود. براي اينكه بتوانيد خروجي برنامه را ببينيد، در انتهاي برنامه دستور زير را وارد نماييد :

‍Console.ReadLine();

استفاده از اين دستور باعث مي‌شود تا برنامه منتظر دريافت يك ورودي از كاربر بماند، كه در اين حالت شما مي‌توانيد خروجي برنامه خود را ديده و سپس با زدن كليد Enter برنامه را خاتمه دهيد.

نكتة ديگري كه در مورد زبان برنامه‌نويسي C# بايد مورد توجه قرار دهيد اينست كه اين زبان Case Sensitive است، بدين معنا كه به حروف كوچك و بزرگ حساس است يعني براي مثال ReadLine با readLine متفاوت است به طوريكه اولي جزو دستورات زبان C# و دومي به عنوان يك نام براي متغير يا يك تابع كه از طرف كاربر تعريف شده است در نظر گرفته مي‌شود.

اعلان Namespace به سيستم اعلان مي‌نمايد كه شما از توابع كتابخانه‌اي System جهت اجراي برنامه‌ها خود استفاده مي‌نماييد. دستوراتي مانند WriteLine و ReadLine جزو توابع كتابخانه‌اي System مي‌باشند. اغلب دستورات و توابع مهم و كليدي استفاده از كنسول ورودي/خروجي در اين كتابخانه مي‌باشد. در صورتيكه در ابتداي برنامه از using System استفاده نكنيد، يابد در ابتداي هر يك از دستورات برنامه كه مربوط اين كتابخانه است، از كلمة System استفاده نماييد. بعنوان مثال در صورت عدم استفاده از using System بايد از دستور System.Console.WriteLine() به جاي Console.WriteLine() استفاده نماييد.

تعريف كلاس،Class Welcome CSS، شامل تعريف داده‌ها(متغيرها) و متدها جهت اجراي برنامه است. يك كلاس، جزو معدود عناصر زبان C# است كه بوسيلة آن مي‌توان به ايجاد يك شي (Object) از قبيل واسط‌ ها (Interfaces) و ساختارها(Structures)، پرداخت. توضيحات بيشتر در اين زمينه در درس‌هاي آينده ذكر مي‌شوند. در اين برنامه كلاس هيچ داده‌ و متغيري ندارد و تنها شامل يك متد است. اين متد، رفتار(Behavior) اين كلاس را مشخص مي‌كند.

متد درون اين كلاس بيان مي‌كند كه اين كلاس چه كاري را پس از اجرا شدن انجام خواهد داد. كلمة كليدي Main() كه نام متد اين كلاس نيز مي‌باشد جزو كلمات رزرو شده زبان C# است كه مشخص مي‌كند برنامه از كجا بايد آغاز به كار نمايد. وجود متد Main() در تمامي برنامه‌هاي اجرايي ضروري است. در صورتيكه يك برنامه حاوي متد Main() نباشد بعنوان توابع سيستمي همانند dll هاي ويندوز در نظر گرفته مي‌شود.

قبل از كلمة Main() كلمه ديگري با عنوان static آورده شده است. اين كلمه در اصطلاح Modifier مي‌گويند. استفاده از static براي متد Main() بيان مي‌دارد كه اين متد تنها در در همين كلاس قابل اجراست و هيچ نمونه‌اي (Instance) ديگري از روي آن قابل اجرا نمي‌باشد. استفاده از static براي متد Main() الزامي است زيرا در ابتداي آغاز برنامه هيچ نمونه‌اي از هيچ كلاس و شي‌اي موجود نمي‌باشد و تنها متد Main() است كه اجرا مي‌شود. (در صورتيكه با برخي اصطلاحات اين متن از قبيل كلاس، شي، متد و نمونه آشنايي نداريد، اين به دليل آنست كه اين مفاهيم جزو مفاهيم اولية برنامه‌نويسي شي‌گرا (OOP) هستند. سعي مي‌كنم در درس‌هاي آينده به توضيح اين مفاهيم نيز بپردازم، ولي فعلاً در همين حد كافي مي‌باشد.)

سالک: شاید بعضی تفاوتها وجود داشته باشد. اگر مثل من با ویژوال استودیو 2005 کار می کنید بنا را بگذارید بر کدهایی که بالا اجرا کردیم. این تفاوتها شاید ناشی از اختلاف ورژن یا چیزهای دیگر باشد. کلا گفتم که منظور یکی نکته های خوب این صفحه است و یکی مرور مطالب گفته شده در پستهای قبلی.

هر متد بايد داراي يك مقدار بازگشتي باشد، يعني بايد مقداري را به سيستم بازگرداند، در اين مثال نوع بازگشتي void تعزيف شده است كه نشان دهنده آنست كه اين متد هيچ مقداري را باز نمي‌گرداند يا به عبارت بهتر خروجي ندارد. همچنين هر متد مي‌تواند داراي پارامترهايي نيز باشد كه ليست پارامترهاي آن در داخل پرانتزهاي جلوي آن قرار مي‌گيرد. براي سادگي كار در اين برنامه متد ما داراي هيچ پارامتري نيست ولي در ادامة همين درس به معرفي پارامترها نيز مي‌پردازم.

متد Main() رفتار و عمل خود را بوسيله Console.WriteLine(…) مشخص مي‌نمايد. Console كلاسي در System است و WriteLine() متدي در كلاس Console. در زبان C# از اپراتور "." (نقطه dot) جهت جداسازي زيرروتين‌ها و زيرقسمتها استفاده مي‌كنيم. همانطور كه ملاحظه مي‌كنيد چون WriteLine() يك متد درون كلاس Console است به همين جهت از "." جهت جداسازي آن استفاده كرده‌ايم.

در زبان ‍C#، براي قرار دادن توضيحات در كد برنامه از // استفاده مي‌كنيم. بدين معنا كه كامپايلر در هنگام اجراي برنامه توجهي به اين توضيحات نمي‌كند و اين توضيحات تنها به منظور بالا بردن خوانايي متن و جهت و كمك به فهم بهتر برنامه قرار مي‌گيرند. استفاده از // تنها در مواردي كاربرد دارد كه توضيحات شما بيش از يك خط نباشد. در صورت تمايل براي استفاده از توضيحات چند خطي بايد در ابتداي شروع توضيحات از /* و در انتها آن از */ استفاده نماييد. در اين حالت تمامي مطالبي كه بين /* */ قرار مي‌گيرند به عنوان توضيحات (Comments) در نظر گرفته مي‌شوند.

تمامي دستورات (Statements) با ";"، سمي كولون، پايان مي‌يابند. كلاس‌ها و متد‌ها با } آغاز شده و با { خاتمه مي‌يابند. تمامي دستورات بين { } يك بلوك را مي‌سازند.

بسياري از برنامه‌ها از كاربر ورودي دريافت مي‌كنند. انواع گوناگوني از اين ورودي‌ها مي‌توانند به عنوان پارامتري براي متد Main() در نظر گرفته شوند. ليست 2-1 برنامه‌اي را نشان مي‌دهد نام كاربر را از ورودي دريافت كرده و آن را بر روي صفحه نمايش مي‌دهد. اين ورودي به صورت پارامتري براي متد Main() در نظر گرفته شده است.

ليست 2-1 : برنامه‌اي كه ورودي را از كاربر، بعنوان پارامتر Main()، دريافت مي‌كند.
کد:
// Namespace اعلان

using System;

// كلاس آغازين برنامه

class NamedWelcome

  {

   // آغاز اجرا برنامه

   public static void Main(string[] args)

     {

      // نمايش بر روي صفحه

      Console.WriteLine("Hello, {0}!", args[0]);

      Console.WriteLine("Welcome to the C# Persian Tutorial!");

     }

  }
توجه داشته باشيد كه اين برنامه، ورودي را به صورت Command-Line دريافت مي‌كند و در هنگام اجراي برنامه بايد ورودي را در Command-Line وارد نماييد. در صورتيكه ورودي را وارد ننماييد برنامه دچار مشكل شده و متوقف خواهد شد.

همان طور كه در ليست 2-1 مشاهده مي‌نماييد، پارامتر متد Main() با عنوان args مشخص شده است. با استفاده از اين نام در داخل متد مي‌توان آن استفاده نمود. نوع اين پارامتر از نوع آرايه‌اي از نوع رشته (string[]) در نظر گرفته شده است. انواع(types) و آرايه‌ها را در درس‌هاي بعدي بررسي مي‌كنيم. فعلاً بدانيد كه آرايه رشته‌اي جهت نگهداري چندين كاراكتر مورد استفاده قرار مي‌گيرد. [] مشخص كننده آرايه هستند كه مانند يك ليست عمل مي‌كند.

همانطور كه ملاحظه مي‌كنيد در اين برنامه دو دستور Console.WriteLine(…) وجود دارد كه اولين دستور مقداري با دستور دوم متفاوت است. همانطور كه مشاهده مي‌كنيد داخل دستور Console.WriteLine(…) عبارتي به شكل {0} وجود دارد. اين آرگومان، نشان مي‌دهد كه به جاي آن چه مقداري بايد نمايش داده شود كه در اين جا args[0] نشان داده مي‌شود. عبارتي كه داخل " " قرار دارد عيناً در خروجي نمايش داده مي‌شود، به جاي آرگومان {0}، مقداري كه پس از " قرار دارد، قرار مي‌گيرد. حال به آرگومان بعدي يعني args[0] توجه كنيد. مقدار صفر داخل [] نشان مي‌دهد كه كدام عنصر از آرايه مورد استفاده است. در C# انديس آرايه از صفر شروع مي‌شود به همين جهت براي دسترسي به اولين عنصر آرايه بايد از انديس صفر استفاده كنيم.(همانطور كه قبلاً نيز كفتم آرايه‌ها را در درس‌هاي آينده توضيح خواهم داد، هدف از اين درس تنها آشنايي با C# است.!)



مجدداً به آرگومان {0} بازگرديم. اين آرگومان نشان مي دهد كه يك مقدار بايد در رشته خروجي قرار گيرد، اين مقدار همان args[0] است. اگر شما اين برنامه را از طريق Command-Line اجرا نماييد خروجي شبيه به زير خواهيد گرفت :
کد:
>Hello!, Meysam!

>Welcome to C# Persian Tutorial!
همان گونه كه مي‌بينيد، پس از اجراي برنامه نام شما كه از طريق Command-Line آنرا وارد نموده‌ايد در خروجي ظاهر مي‌شود. استفاده از آرگومان {n}، كه در آن n يك مقدار عددي است، جهت فرمت دادن به متن خروجي است كه بر روي صفحه به نمايش در مي‌آيد. مقدار n از صفر آغاز شده و به ترتيب افزايش مي‌بايد. به مثال زير توجه كنيد :
کد:
Console.WriteLine("Hello! ,{0} ,{1}, {2}",args[0],args[1],args[2]);
این خط از برنامه سه مقدار args[0],args[1],args[2] را در خروجي به ترتيب نمايش مي‌دهد. ملاحظه مي‌نماييد كه چون 3 مقدار را مي‌خواهيم نمايش دهيم، سه بار از آرگومان {n} استفاده كرده‌ايم و هر بار يك واحد به مقدار قبلي افزوده‌ايم. در آينده بيشتر با اين مفاهيم آشنا مي‌شويم.

مطلبي كه بايد در مورد ليست 2-1 به آن توجه شود آنست كه اين برنامه تنها از طريق Command-Lineقابل اجراست و در صورتيكه كاربر از اين مطلب كه برنامه بايد داراي ورودي به صورت Command-Line باشد، بي اطلاع باشد و ورودي را در Command-Line وارد نكند، برنامه متوقف شده و اجرا نمي‌شود. پس براي رفع چنين مشكلي بايد از روش بهتري جهت دريافت ورودي از كاربر استفاده كرد.

ليست 3-1 : يك برنامه كه قابليت محاوره با كاربر را دارد.
کد:
// Namespace اعلان

using System;

 

// كلاس آغازين برنامه

class InteractiveWelcome

  {

   //آغاز اجراي برنامه 

   public static void Main()

    {

     // متني بر روي صفحه نمايش داده مي‌شود

     Console.Write("What is your name?: ");

     //متني نمايش داده شده و برنامه منتظر دريافت ورودي مي‌ماند

     Console.Write("Hello, {0}! ", Console.ReadLine());

     Console.WriteLine("Welcome to the C# Persian Tutorial!");

    }

  }
همانطوريكه در اين برنامه ديده مي شود، متد Main() داراي پارامتر نيست. در عوض يك خط به متن برنامه ليست 2-1 اضافه شده است. در اولين خط از اين برنامه، متني با عنوان اينكه نام شما چيست؟ بر روي صفحه ظاهر مي‌شود. سپس در خط بعدي پس از نوشتن كلمه Hello, ، برنامه منتظر دريافت ورودي از كاربر مي‌شود. بدين معني كه اين بار تا زمانيكه كاربر متني را به عنوان نام خود وارد نكند اجراي برنامه به پيش نخواهد رفت و خط بعدي اجرا نمي‌شود. اين برنامه روش ايجاد ارتباط از طريق برنامه با كاربر را نمايش مي‌دهد. در اين مثال كاربر دقيقاً متوجه مي‌شود كه چه زماني بايد اطلاعات را وارد نمايد و اين اطلاعات چه بايد باشد در حاليكه در مثال قبل چنين نبود. همانگونه كه مي‌بينيد در اين برنامه آرگومان {0} مستقيماً از طريق دستور Console.ReadLine() دريافت مي‌شود و بلافاصله در خروجي نمايش داده مي‌شود. دستور ReadLine() نيز يكي از متدهاي كلاس Console است كه بوسيله آن رشته ورودي خوانده مي‌شود.

خروجي برنامه فوق به شكل زير است :
کد:
What is your name?:
(سپس برنامه منتظر دريافت متني از ورودي توسط كاربر مي‌ماند)

(پس از اينكه كاربر رشته‌اي را وارد كرد و كليدEnter را فشار داد، متن زير نمايش داده مي‌شود.)
کد:
Hello, Meysam!
(سپس اجراي برنامه به دستور بعدي منتقل مي‌شود)
کد:
Welcome to the C# Persian Tutorial!
خروجي كامل برنامه :
کد:
What is your name?:

Hello, Meysam! Welcome to the C# Persian Tutorial!
توجه كنيد كه ReadLine() به عنوان يك متد، مقداري را به سيستم بازمي‌گرداند. اين مقدار در اين برنامه به آرگومان {0} برگردانده مي‌شود. اين خط از برنامه را مي‌توان طور ديگري هم نوشت :
کد:
[string myName=Console.ReadLine();

Console.WriteLine("Hello, {0}!",myName);
در اين حالت ما يك متغير از نوع رشته با نام myName تعريف كرده‌ايم كه مقدار ورودي در آن ذخيره مي‌شود و سپس از اين مقدار به عنوان مقداري‌ كه {0} مي‌پذيرد استفاده كرده‌ايم.

در اين درس آموختيد كه ساختار كلي يك برنامه C# چگونه است. هر برنامه C# از يك كلاس اصلي تشكيل مي‌شود كه اين كلاس شامل داده‌ها و متغيرها و متدهايي مي‌باشد. متد آغازين برنامه كه برنامه با آن شروع به اجرا مي‌كند، متد Main() است. با استفاده از توابع كتابخانه‌اي مي‌نوان به كلاسها و متدهاي C# دسترسي پيدا كرد. از جمله اين توابع System بود كه يكي از كلاسهاي آن Console و چند متد اين كلاس، متدهاي WriteLine() و ReadLine() بودند.

در اينجا اولين درس به پايان رسيد. از همه دوستاني كه اين مطلب را مي‌خوانند تقاضا دارم نظرات و پيشنهادات خود را براي من mail كنند.


استفاده از مطالب اين قسمت از سايت در هر سايت يا وبلاگ و رسانه ديگري با ذكر آدرس دقيق منبع و نام نويسنده آن بلامانع مي‌باشد. تمامي حقوق مادي و معنوي اين سايت و اين نوشته متعلق به شخص "ميثم قزويني" است.
سالک : با تشکر از آقای میثم قزوینی.
 
آخرین ویرایش:

saalek110

Well-Known Member
چند نکته از :
http://c-sharp.persianblog.com
احتمالا ایشان از ویژوال استودیو 2003 استفاده می کرده. ولی مهم نیست. مهم نکات است.
اکنون نوشتن اولین برنامه:
در فایل Class.cs کلاسی به نام Class1 را تعریف می کند که دارای متدی به نام Main است. تمام متد ها باید درون یک کلاس تعریف شوند .متد Main متد ویژه ای است که در واقع نقطه شروع و ورود به برنامه است . این متد باید یک متد Static باشد (کسانی که با C++ آشنا هستند این اصطلاحات برایشان آشناست)
همان طور که متوجه شديد می خواهيم يک برنامه کنسول بنويسيم و اما کار اين برنامه نوشتن Hello World در کنسول است.
برای شروع به قسمت کد برنامه رفته و TODO یعنی توضیحات (خط هایی که با // شروع می شوند ) را از متد Main در کلاس Class1.cs حذف کنید و یک خط خالی را بعد از آکولاد باز اضافه کنید و کد زیر را تایپ کنید :

Consol.Writeline("Hello World");

توجه داشته باشید که با تایپ اولین کلمه و گذاشتن نقطه یک لیست Intellisense ظاهر خواهد شد . این لیست شامل تمام متد ها ،خاصیت ها و فیلد های کلاس Consol می باشد .
و نکته دیگری که قایل ذکر می باشد این است که شما پس از نوشتن و یا انتخاب Wiriteline و گذاشتن پرانتز باز برای شما یک Tip یا راهنمای کوچک ظاهر میشود این راهنما پارامتر های این متد را نمایش می دهد .
در حقیقت این متد یک متد Overload است یعنی Consol دارای بیش از یک متد بنام Writeline است.
اکنون زمان آن رسیده که برنامه را اجرا و نتیجه کار خود را مشاهده کنید
از منوی Build گزینه Build را انتخاب کنید .
Build با موفقیت انجام می شود و خط زیر در کادر OutPut ظاهر خواهد شد :

Build : 1 Succeeded , 0 Failed , 0 Skipped

نکته : هنگامی که برنامه را Build می کنید خودکار برنامه در صورتی که ذخیره نشده باشد ، ذخیره خواهد شد.
از منوی Debug گزینه Start Without Debugging را انتخاب کنید .
همان طور که مشاهده می کنید در یک پنجره command اجرا می شود و رشته مورد نظر را در کنسول می نویسد.

برای این کار ابتدا به منوی Start رفته Programs را انتخاب کنید و بعد از منوی حاظر Microsoft Visual Studio .NET را انتخاب کرده کلیک کنید تا ویژوال استودیو NET. باز شود.
محیطی که برای شما باز خواهد شد بسیار برای کسانی که قبلا با ویژوال استودیو کار کرده اند آشنا خواهد بود اما در واقع تفاوت های اساسی با نسخه های قبلی خود دارد.
اکنون از منوی File گزینه New و بعد گزینه Project را انتخاب کنید.
یک پنجره برای شما ظاهر می شود که عنوان New Project را داراست. این پنجره این امکان را می دهد تا با استفاده از قالب های مختلفی از جمله Windows Application , Class Library ,Consol Application نوع برنامه ای که ایجاد می کنید را تعیین کنید و یک پروژه جدید را ایجاد کنید.
پنجره ای که برای شما نشان داده شده است به چند قسمت تقسیم شده است که یکی از این قسمت ها Project Type می باشد در این قسمت روی Visual C# Project کلیک کنید.
از دیگر قسمت های این پنجره Tempate می باشد (که در این قسمت قالب برنامه ای که می خواهید بنویسید را انتخاب می کنید ) حال شما روی Consol Application کلیک کنید .(ممکن است مجبور باشید که از Scroll Bar پنجره کوچک Template برای دیدن این آیکون استفاده کنید .)
در قسمت دیگر این پنجره که Location نام دارد آدرس محلی که می خواهید برنامه شما در آنجا ذخیره شود را قرار دهید.
در صورتی که خواستید برنامه شما در یکه زیر شاخه دیگر همان شاخه که اکنون موجود نیست قرار گیرد فقط کافی است که اسم زیر شاخه را بنویسید خود ویژوال استودیو این زیر شاخه را تشکیل می دهد و برنامه شما در این زیر شاخه قرار خواهد گرفت.

در قسمت Name نام برنامه قرار می گیرد که این نام گذاری با توجه به قوانین نام گذاری فایل ها صورت می گیرد.
بعد از قرار دادن اسم برنامه در این قسمت روی دکمه OK کلیک کلیک کنید.
پروژه جدید باز خواهد شد .
از این به بعد شما می توانید مانند تمام برنامه های تحت ویندوز با استفاده از منوها و نوار ابزار اعمالی که می خواهید انجام دهید .
اکنون در مقابل شما محیطی وجود دارد که دارای قسمت های مختلفی است که به توضیح تک تک آنها می پردازیم .
در قسمت بالا نوار منو و کلید های دسترسی سریع قرار دارند که بیشتر اعمال از قبیل ایجاد یک برنامه باز کردن و کامپایل کردن و ....
در سمت راست یک پنجره به نام Solution Explorer قرار دارد که در آن اسم فایل های پروژه را نشان می دهد و شما می توانید با کلیک کردن روی هر فایل سورس آن را در پنجره کد که در سمت چپ قرار دارد مشاهده کنید از جمله این فایل ها :
فایلهای با پسوند .Sln :
این فایل سطح بالای Solution است که برای هر برنامه یک فایل از این نوع موجود است . هر فایل Solution یک یا چند فایل پروژه را در خود دارد.
فایلهای با پسوند .Csproj:
این یک فایل پروژه C# است .هر فایل پروژه یک یا چند فایل سورس دارد . فایل های سورس در یک پروژه باید به یک زبان برنامه نویسی نوشته شود .
فایلهای با پسوند Cs:
این یک فایل سورس است و کد برنامه در این فایل نوشته می شود و این فایل شامل کدی است که ویژوال استودیو به صورت خود کار ایجاد می کند .
فایل Assemblyinfo.cs:
این یک فایل سورس دیگر است با این تفاوت که می توان از این فایل برای اضافه کردن مواردی مثل اسم نویسنده و تاریخ نوشتن برنامه و امثال آن به برنامه استفاده می شود.
فایل .Ico:
این آیکون برنامه است .آیکونی که در زمان اجرای برنامه در نوار وظیفه قرار می گیرد.

¤ نوشته شده در ساعت 10:47 توسط حميد لطفی
 
آخرین ویرایش:

saalek110

Well-Known Member

جمع بندی منابع فارسی تاپیک:

آموزشهای صفحه اول این تاپیک از پستهای 2 تا 7 از این سایت بود:
http://www.dev.ir/articles/list.asp?cat=c-sharp

که شش درسش را گفتیم و کل سایت در 20 درس است.

بعد در پست 9 از :
http://csharp-persian.netfirms.com/C_Sharp_List.htm
یک مروری بر درسهای اول داشتیم.

در پست 10 هم از :
http://c-sharp.persianblog.com/
نکاتی گفتیم.

تعدادی کتاب هم در پست بعد گذاشته شده..
به همراه pdf شده بیست درس بالا.

در این سایت هم آقای نصیری سلسله آموزشهایی دارد:
http://www.developercenter.ir/forum/showthread.php?t=1196
یک آموزش سی شارپ خوب هم این جاست:
http://www.centralclubs.com/viewtopic.php?t=711
==============================
وبلاگ های سی شارپ:
http://ldotnet.persianblog.com
http://c-sharp.persianblog.com/

http://www.csharppro.blogfa.com/
http://csharpblog.blogfa.com/
http://csnarges.blogfa.com/

http://netprg.mihanblog.com/
 
آخرین ویرایش:

saalek110

Well-Known Member

کتابهای فارسی:

از:
http://www.developercenter.ir/forum/showthread.php?t=133
معرفی کتاب :

كتاب مقدمه اي بر #C نوشته وحيد نصيري (81 صفحه)
حجم : 500 کیلو.

http://www.developercenter.ir/download/cs_articles.zip


از:
http://freeprograming.mihanblog.com
معرفی کتاب :

آموزش ویژوال سی 2005
سید محمد هاشمیان
حجم : 12 مگا.

http://www.parsaspace.com:80/mohsennowruzi/ebook/csharpfarsi/LearnVisualCsharpFarsi.pdf
کد:
www.parsaspace.com:80/mohsennowruzi/ebook/csharpfarsi/LearnVisualCsharpFarsi.pdf

یک کتاب فارسی دیگه از این تاپیک که این آدرس دانلود اش است.
حجم : 300 کیلو.
آن 20 درس به نقل از :
http://forum.p30world.com/showpost.php?p=406423&postcount=33
به شکل pdf شده که در آدرس:
http://www.mohsennowruzi.persiangig.com/programming/Csharp/Csharp.pdf
قابل دانلود است. کلیک راست کنید و save target as را بزنید تا دانلود بشه و باز نشه.
من هم همین را برای احتیاط آپلود کردم:
http://saalek.ifastnet.com/csharp/csharp_20dars_farsi.zip


یک آموزش پلی مورفیسم از :
http://forum.majidonline.com/showthread.php?t=63160

pdf بود من ازش عکس گرفتم.
http://saalek110.250free.com/gifs/a1/a4.gif
 
آخرین ویرایش:

saalek110

Well-Known Member

کتابهای انگلیسی:



مهم ترین لینک:

http://www.flazx.com/category3.php
حاوی صد کتاب سی شارپ - قبل از مراجعه به صفحات دیگر اول به اینجا سر بزنید.

به این سایت هم سری بزنید: با تشکر از جناب سفیر safir187
http://www.itebookhome.com

[/QUOTE]

چند لینک سایت برای دانلود کتاب سی شارپ.
اینکه دانلود شد یا نه و کیفیت کتاب را بعد دانلود می گویم.

http://www.shahabfar.com

دانلود کتاب های دات نت ASP.NET و SQL server و PHP و MySQL
http://www.macromediax.com/learn/archive.asp?id=124


تمامی کتابهای رایگان زبانهای برنامه نویسی
http://forum.p30world.com/showthread.php?t=20725

چند کتاب سی شارپ و asp :
http://www.shahabfar.com/AllBooks.aspx


http://persian-ebook.persianblog.com/
چند کتاب asp و , vb --یکی از آنها asp با سی شارپ است

Visual C# 2005 How to Program (2nd Edition
a3.gif

چون سایت وارز بود عکس لینک را گذاشتم. خودتان تایپ کنید.
باید اینجا ثبت نام کنید تا بتوانید مجانی دانلود کنید.
حجم : در حدود 28 مگا.
 
آخرین ویرایش:

saalek110

Well-Known Member
منبع:
http://www.aachp.ir/post.aspx?no=74
------------------------------------------------

کتاب مرجع C# .Net - ارائه شده توسط مسعود اقدسی فام

بنا به درخواست برخي از دوستان اينبار كتاب الکترونيكي جامع و كاملي رو در مورد زبان برنامه نويسي C# .Net معرفي مي كنم. كتاب Pro C# 2005 and the .NET 2.0 Platform تهيه شده توسط Andrew Troelsen براي برنامه نويسان مبتدي، نيمه حرفه اي و حتي حرفه اي زبان سي شارپ مطالب جالب و آموزنده اي داره. ویرایش سوم اين كتاب 1032 صفحه اي از 5 بخش و 25 فصل با عناوين زير تشكيل شده:

Part 1 Introducing C# and the .NET Platform

Chapter 1 The Philosophy of .NET

Chapter 2 Building C# Applications



Part 2 The C# Programming Language

Chapter 3 C# Language Fundamentals

Chapter 4 Object-Oriented Programming with C#

Chapter 5 Understanding Object Lifetime

Chapter 6 Understanding Structured Exception Handling

Chapter 7 Interfaces and Collections

Chapter 8 Callback Interfaces, Delegates, and Events

Chapter 9 Advanced C# Type Construction Techniques

Chapter 10 Understanding Generics



Part 3 Programming with .NET Assemblies

Chapter 11 Introducing .NET Assemblies

Chapter 12 Type Reflection, Late Binding, and Attribute-Based Programming

Chapter 13 Processes, AppDomains, Contexts, and CLR Hosts

Chapter 14 Building Multithreaded Applications

Chapter 15 Understanding CIL and the Role of Dynamic Assemblies



Part 4 Programming with the .NET Libraries

Chapter 16 The System.IO Namespace

Chapter 17 Understanding Object Serialization

Chapter 18 The .NET Remoting Layer

Chapter 19 Building a Better Window with System.Windows.Forms

Chapter 20 Rendering Graphical Data with GDI+

Chapter 21 Programming with Windows Forms Controls

Chapter 22 Database Access with ADO.NET



Part 5 Web Applications and XML Web Services

Chapter 23 ASP.NET 2.0 Web Pages and Web Controls

Chapter 24 ASP.NET 2.0 Web Applications

Chapter 25 Understanding XML Web Services


همونطور که از سرفصلهای کتاب مشخصه، سعی شده تمامی مباحث مربوط به سی شارپ بررسی بشه. برای دانلود کتاب با حجم حدود ۱۳ مگابايت اینجا كليك كنيد.
 
آخرین ویرایش:

saalek110

Well-Known Member
به نقل از :
http://barnamenevis.org/forum/showthread.php?t=42075
-------------------------------------------
کد:
Net FrameWork
کد:
1- Download the .NET FrameWork
2- .NET FrameWork Google Group
3- Introduction to .NET FrameWork
4- .NET FrameWork
5- Understanding .NET FrameWork at a glance
6- .NET FrameWork Training Modules

کد:
NET source codes and samples
کد:
1- http://www.codeave.com/
2- http://www.freevbcode.com/
3- http://msdn.microsoft.com/downloads/
4- http://www.aisto.com/roeder/dotnet/
5- http://www.codeproject.com
6- http://www.planetsourcecode.com
7- http://www.abstractvb.com/
8- .Net Samples Google Group
9- http://www.codetoad.com/
10- http://www.razorsoft.net/
11- Developmentor - .net code samples
12- Visual Studio.NET Code Swap
13- http://www.developerfusion.co.uk/
15- http://www.yeohhs.com/modules/news/
16- http://www.sourcecodesworld.com/

کد:
NET Security
کد:
1- http://www.net-security.org/
2- About .NET Security
3- .NET Security - C# & VB.NET
4- .NET and computer security
5- Java vs. .NET Security
6- Secuity in .NET FrameWork(PDF) - New
.NET Tools & Components
کد:
1- WiseOwl .NET Code Obfuscator
2- http://www.windowsforms.com
3- http://www.componentsource.com
4- http://www.devdirect.com
5- http://www.dotnetframework.de/dotnet...kte/tools.aspx
6- http://www.dvxp.com/en/Downloads.aspx
.NET Mobile
کد:
1- .NET Mobile Tutorial
2- Introduction to ASP .NET Mobile
Web Development(ASP.NET)
کد:
1- ASP Help, ASP Tutorials, ASP Programming, ASP Code
2- ASP.NET: Scripts, Applications Controls, ASP.NET hosting
3- http://www.hotscripts.com/ASP.NET/index.html]
4- ASP.NET Web: The Official Microsoft ASP.NET 2.0 Site
5- www.learnasp.com
6- http://www.aspfriends.com
7- ASP.NET Google Group
8- DevASP.NET for ASP.NET, VB.NET, XML and C# (C-Sharp) Developers
9- http://www.asp-index.net/
Database Programming(ADO.NET)
کد:
1- http://www.adoguy.com/default.aspx - New
2- DevASP - ADO.NET Section - New
VB.NET
کد:
1- http://www.vbwire.com/
2- http://vbnet.mvps.org
3- http://www.vbcity.com
4- http://www.visualbasicscript.com
6- DevAsp - VB Section
7- http://abstractvb.com
8- DeveloperFusion - VB Section
9- http://www.dotnet2themax.com
10- CodeProject - VB.NET Section
11- VB.NET Google Group
12- An Overview of Visual Basic 2005 - New
13- About Visual Basic - New
14- Visual Basic Frequently Asked Questions - New
15- VB.NET 2005 free trainings - New
C#
کد:
1- http://www.mastercsharp.com
2- CodeProject - C# Section
3- http://c-sharpcorner.com/
4- http://www.csharpfriends.com
5- C# Google Group
6- http://www.csharp-station.com
7- DevAsp - C# Section
8- CodeGuru - C# Section
9- C# And Its Types - New
10- Programming PocketPC in C# - New
SQL Server
کد:
1- http://www.sql-server-performance.com
2- http://www.sql-scripts.com
3- http://www.mcdbadirectory.com
4- http://databases.about.com/od/sqlserver
5- SQL Server Help, SQL Server Tutorials, and more
6- Secure Architecture for an SQL / Web Server
7- www.SQLServerCentral.com

کد:
مراجع و* لينكهاي درباره SQL Server 
نقل قول:سايتي مفيد درباره SQL Server
اسكريپت هاي رايگان براي SQL Server و ساير بانك هاي اطلاعاتي
سايتي درباره امتحان MCSDBA
سايتي ديگر در باره SQL Server
SQL Server Help, SQL Server Tutorials, SQL Server Programming, SQL Server Code
Secure Architecture for an SQL / Web Server
www.SQLServerCentral.com

کد:
http://vb-helper.com/
http://www.vbexplorer.com/
http://www.vbaccelerator.com/
http://searchvb.techtarget.com/
http://www.developer.com/net/vb/

http://www.xtremevbtalk.com/

با مراجعه به سايت زير ، مي توانيد ليستي از "مرجع سايت های دات نت" را مشاهده نماييد.

کد:
http://srco.ir/LinkDotNetSites.asp

-----------------------------------
فیلم آموزشی معرفی چند لینک در تاپیک زیر:
http://www.barnamenevis.org/forum/showthread.php?t=36283
 
آخرین ویرایش:

saalek110

Well-Known Member
سورس سی شارپ:

معرفی سایتهای سورس:
http://www.programmerworld.net/resources/csharp/csharp_source.php

http://www.codeproject.com/csharp/
http://www.java2s.com/Code/CSharp/CatalogCSharp.htm

در تاپیک سایتهای سی :

یک مجموعه جناب unique معرفی کردند که تعدادی سورس از میکروسافت است. با حجم 6 مگا.
http://www.microsoft.com/downloads/...F8-033D-420B-A3B1-3074505C03F3&displaylang=en
اگر توانستید دانلود کنید و کمی کار کنید.
-----------------------------------------------------------
البته این 2003 بود . جناب night لطف کردند لینک 2005 را دادند :
http://download.microsoft.com/download/8/1/d/81d789e2-0cbb-421e-b4f9-b40aabadd201/101SamplesCS.msi

با حجم 18 مگا.
صفحه ای هم که لینک دانلود در آن بوده این است :
http://msdn2.microsoft.com/en-us/vstudio/aa718334.aspx
------------------------------------------------------------
هر دو را من بی مشکل دانلود و نصب کردم. یعنی دو ورژن 2005 و 2003 را.
 
آخرین ویرایش:

saalek110

Well-Known Member
معرفی سایتهای دات نت:
http://www.developercenter.ir/Forum/showthread.php?t=443
http://msdn.microsoft.com/vstudio/express/visualcsharp/learning/default.aspx
Learning Resources


› Absolute Beginner’s Video Series

› Windows Forms Controls Series

› Webcast Coding Series: Tools for the Hobbyist Developer


Absolute Beginner’s Video Series

This video series is designed specifically for individuals who are interested in learning the basics of creating applications using Visual C# 2005 Express Edition. The series includes over 10 hours of video-based instruction that walks you through creating your first "Hello World" application to a fully functioning RSS Reader application. Learn how to write your first application today!!​
آموزش با ویدئو است برای مبتدی ها انگار. ولی من هنوز امتحان نکرده ام
 
آخرین ویرایش:

saalek110

Well-Known Member
لینک تاپیک:

اس ام اس با سی شارپ
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=344083&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=856908&SiteID=1

os version detection
http://blogs.msdn.com/ejarvi/archive/2004/06/08/151162.aspx

Plugin tutorial
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=900055&SiteID=1

Is it possible to execute c# program in background
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=881962&SiteID=1

Asian characters in a rich edit text box
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=867273&SiteID=1

Adding new project in current project?
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=818228&SiteID=1

How to Add forms dynamically...
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=818606&SiteID=1

مربوط به صدا:

Communication between forms
http://www.codeguru.com/forum/showthread.php?t=409788
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا