
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترC# رایگان
مقدمات سی شارپ

برای آموزش سی شارپ از نرمافزار ویژوال استودیو که ابزاری برای برنامه نویسان دات نت است استفاده می کنیم. این نرم افزارتوسط شرکت مایکروسافت تولید شده و تمرکز اصلی آن محیطی برای نوشتن پروژه های نرم افزاری به زبان های پلتفرم دات نت است که به برنامهنویس اجازه میدهد تا برنامههای کاربردی مستقل برای سیستم عامل های گوناگون، یک وب سایت اینترنتی و یا حتی سرویسهای وب را که از دات نت پشتیبانی می کنند (البته برای تمام نسخههای بعد از ویژوال استودیو ۶) را به راحتی ایجاد نماید. امکانات گسترده و سادگی کار با ویژوال استودیو باعث شده تا این محیط محبوب ترین محیط برنامه نویسی سی شارپ و به طور کلی زبان های برنامه نویسی پلتفرم دات نت باشد.

هر پروژه نرم افزاری دارای یک ساختار استاندارد است که بایستی رعایت شود. در سی شارپ نیز ساختار استانداردی وجود دارد که برای نوشتن یک برنامه کارآمد و مطمئن لازم است تا هر چه دقیق تر و کامل تر این ساختار رعایت گردد. در این بخش از سری آموزش سی شارپ به بررسی ساختار یک پروژه سی شارپ خواهیم پرداخت.

هر برنامه کامپیوتری از دو بخش کد و داده تشکیل گردیده است. منظور از داده همان اطلاعاتی است که برنامه در حین اجرا در حافظه با آن ها سر و کار دارد. برای نگهداری این داده ها باید از متغیرها استفاده کنیم. همچنین این داده ها بسته به جنس و نوع خود بایستی در متغیری متناسب با گونه داده ای مربوطه ذخیره گردند. در این بخش از آموزش سی شارپ به بررسی این مفاهیم خواهیم پرداخت.

متغیرها بر اساس گونه خود می توانند شامل داده باشند. مثلا داده های عددی (مثبت یا منفی، صحیح یا اعشاری، اندازه عدد و ...) خود شامل چندین حالت هستند که بسته به کاربرد آن ها بایستی گونه داده ای متناسب برایشان انتخاب نمود. یکی از این حالات خاص زمانی است که مقدار داده یک متغیر بیش از حد معمول است (مثلا یک عدد بسیار بزرگ یا یک متن طولانی). در این حالات باید توجه کرد که مقدار داده از توان نگهداری متغیر (با توجه به نوع تعریف شده آن) بیشتر نشود و یا این مقادیر را به شکلی مناسب کنترل و مدیریت نمود.

در برنامه نویسی منظور از operation، عملیاتی است که به منظور اصلاح مقدار متغیر موجود، (یا ایجاد مقداری جدید با ترکیب مقدارهای جاری)، روی مقدار معینی انجام می شود. بنابراین، operation با استفاده از حداقل یک نشانه (symbol) و یک مقدار (value) امکان پذیر می شود.
ساخت کلاس در سی شارپ

در تقریبا تمامی زبان های شی گرا، باید ابتدا الگویی برای ساخت اشیا ایجاد کرد تا اشیای مورد استفاده در برنامه بر پایه این الگوها ساخته شوند."کلاس ها" همان الگوهای ساخت اشیا هستند که در زبان سی شارپ به همین منظور کاربرد دارند. در سی شارپ می توان با به کاربردن چند متغیر یک شئ پیچیده ساخت. هر زبان برنامه نویسی خود امکان استفاده از چندین نوع متغیر و همچنین توابع دلخواه نوشته شده توسط برنامه نویس وجود دارد. کلاس در واقع پایه ای برای ایجاد متغیری پیچیده که شامل دیگر انواع متغیرهای پایه و توابع یا حتی از نوع دیگر کلاس ها می باشد. حال برای به وجود آوردن یک کلاس, ابتدا کلیدواژه ی class را تایپ کرده و سپس به دنبال آن اسم و بدنه ی اصلی را داخل بلوک {} قرار می دهیم.

هر کلاس از دو بخش اصلی تشکیل می شود. یک بخش که صفات و ویژگی های آن شی است که به کمک متغیرهای تعریف شده در آن کلاس پوشش داده می شود. بخش دیگر رفتارها و عملیات اجرایی آن کلاس است که توسط توابع داخل کلاس تعریف می گردد. به توابع داخل کلاس متد می گوییم.


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

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

زبان C#، برخلاف زبان های C، C++، Pascal، Visual Basic و Java، از ریاضی پشتیبانی نمی کند (امکان پشتیبانی توکار برای ریاضی ندارد) و مجبور است این قابلیت را از کتابخانه ها یا زبان های دیگر وام بگیرد...

از آنجا که سی شارپ زبانی حساس به گونه های داده ای برای متغیرها است، بایستی هنگام انتساب مقادیر داده ای متفاوت به یکدیگر گونه داده ای آن ها را در صورت امکان همسان نمود.

در هر زبان برنامه نویسی لازم است تا بتوان اعمال ریاضی مشخصی را روی داده های عددی به کار برد. برخی از این عملیات پرکاربرد بوده و به صورت استاندارد درون اغلب زبان های برنامه نویسی وجود دارند. در سی شارپ این عملیات به کمک عملیات و امکانات تعریف شده در کلاس MATH انجام می شود.

توابع مثلثاتی بخش مهمی از توابع ریاضی هستند که در بسیاری از پروژه ها کاربرد خاص خود را دارند. در تقریبا همه زبان های برنامه نویسی امکاناتی برای کار با این دسته از توابع ریاضی فراهم شده است که در ادامه به بررسی این امکانات در زبان سی شارپ خواهیم پرداخت.
خواندن و قالب بندی داده ها در سی شارپ

در برنامه نویسی به هر زبانی از جمله سی شارپ بسیاری مواقع لازم است تا از کاربر مقداری را دریافت کنیم(مثلا مشخصات فردی وی). سپس با انتساب این مقادیر به متغیرهای مربوطه (که به آن دستور assignment/ تساوی نیز می گویند و با علامت = نشان داده می شود و کار آن کپی مقدار در متغیر است)، می توان از این داده ها به هر شکل لازم استفاده نمود.

بخش پرکاربردی از فرآیند دریافت مقادیر و داده ها از کاربران در سی شارپ مربوط به دریافت داده های از نوع اعداد (integer in C#) می باشد. همچنین بسیاری مواقع با مقادیر تاریخ و زمان (DateTime in C#) سر و کار داریم.

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

همانند هر داده دیگری، لازم است تا بتوان مقادیر مربوط با تاریخ و زمان را نیز در ساختارها و قالب های گوناگون و دلخواه نمایش داد. در این مقاله به چگونگی انجام این امر خواهیم پرداخت.

placeholderها ابزارهایی برای کنترل چیدمان و ترتیب عناصر نمایش دهنده در برنامه هستند. به کمک این ابزارها می توان به شکلی ساده تر و موثرتر داده ها و المان های برنامه را به شکل مورد نظر نمایش داد.

هنگام کار با هر داده ای لازم است تا گونه داده ای آن متناسب با محل کاربردش باشد. به همین دلیل بسیاری مواقع نیاز داریم تا گونه داده ای یک داده موجود را به گونه داده ای دیگری تبدیل کنیم. یکی از رایج ترین این تبدیل ها تبدیل به گونه متنی یا رشته ای است که در این مقاله به بررسی آن خواهیم پرداخت.

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

دستور شرطی، عبارتی است که نتیجه ی درست (true) یا نادرست (false) بدهد. به منظور ایجاد عبارت (expression) لازم، عملگرهای مقایسه ای را به کار می بریم و نتیجه بررسی یک شرط یک مقدار Boolean خواهد بود.

در تمامی زبان های برنامه نویسی لازم است تا ساختاری برای بررسی یک یا چند شرط و تصمیم گیری داشته باشیم. در زبان سی شارپ این ساختار به کمک دستور if به وجود می آید. در این بخش از سری آموزش سی شارپ به توضیح این دستور و فرآیند کار با آن خواهیم پرداخت.

شکل کامل شده دستور if می تواند به همراه بخش else باشد. در سی شارپ چنانچه شرط درون پرانتز دستور if نتیجه نادرست داشته باشد(در نتیجه بلوک if اجرا نخواهد شد)، می توان بلوک خاصی برای این حالت با دستور else قرار داد تا اجرا شود. به طور کلی در آموزش سی شارپ در ساختارهای شرطی و تصمیم گیری چنانچه شرط مورد نظر نتیجه درست داشته باشد یک روند اجرا شده و در غیر این صورت می توان روند دیگری را اجرا نمود. استفاده از بخش else اختیاری است.

عملگرهایی هستند که به صورت کوتاه شده به جای if...else می توانند عمل کنند. چنانچه هر بلوک دستور if...else ما تنها شامل یک دستور اجرایی باشد، می توان از این روش به جای آن استفاده کرد.
دستور شرطی switch و ترکیبات منطقی در سی شارپ

گاهی لازم است تا مقدار یک متغیر با چندین مقدار از پیش مشخص مقایسه شده و بر اساس نتیجه این مقایسه تصمیم گیری شود. دستور switch برای این موارد گزینه مناسبی است.

در این بخش قصد داریم تا نکات و مباحث بیشتری از دستورات شرطی و ساختارهای آن ها را بررسی کنیم.

بسیاری موارد پیش می آید که لازم است تا دو یا چند شرط را با هم ترکیب کرده و تصمیم مورد نظر خود را بر پایه نتیجه ترکیب آن ها بگیریم. در تقریبا تمامی زبان های برنامه نویسی امکان ترکیب شرط ها همانند آنچه در جبر بول و ترکیب گزاره ها وجود دارد ("و"، "یا"، "نقیض") پشتیبانی شده است. در این بخش از آموزش سی شارپ می خواهیم به اولین حالت این ترکیب که "and در سی شارپ" است بپردازیم.

همانطور که در بخش قبلی گفتیم چندین مدل برای ترکیب شرط ها وجود دارد. حالت دیگری که در این بخش از آموزش سی شارپ به بررسی آن خواهیم پرداخت ترکیب شرطی or در سی شارپ است.
کار با حلقه ها در سی شارپ

بسیاری مواقع هنگام برنامه نویسی لازم است تا یک فرآیند چندین بار تکرار شود. ممکن است تعداد این تکرار ازقبل مشخص بوده و یا نباشد و تا زمان برقراری شرط یا شرایط خاصی ادامه یابد. برای تکرار یک یا چند دستور مشخص می توان از حلقه های تکرار استفاده نمود. چندین روش برای ساخت حلقه در سی شارپ وجود دارد که در این بخش از آموزش سی شارپ به آن ها خواهیم پرداخت.

دستور while یکی از دستورهای پایه و اصلی برای ایجاد ساختارهای تکرار شرطی در زبان سی شارپ است. به کمک این دستور می توانید حلقه های تکرار بر پایه یک شرط ایجاد کنید.

یکی دیگر از روش های بسیار پرکاربرد ساخت حلقه در زبان سی شارپ استفاده از دستور for است. شاید سادگی و خوانایی بیشتر این دستور نسبت به دیگر روش های ساخت حلقه در سی شارپ موجب محبوبیت بیشتری برای آن شده باشد. در این درس می خواهیم به بررسی حلقه for در سی شارپ بپردازیم.

حلقه do while در سی شارپ بسیار شبیه حلقه while است با این تفاوت که شرط حلقه در پایان هر بار اجرای آن بررسی می گردد و چنانچه این شرط درست باشد حلقه یک بار دیگر اجرا خواهد شد.

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

گاهی لازم است تا محتوی کدی که در بدنه اجرای یک شرط یا حلقه قرار داده ایم دوباره شرط یا حلقه دیگری نیز بیاید که در این حالت حلقه و یا شرط های تو در تو در سی شارپ ساخته ایم. امکان استفاده از این ساختار تا هر اندازه دلخواه وجود دارد ولی به دلیل کم شدن خوانایی و کارایی برنامه بیشتر از سه مرحله توصیه نمی شود.

گاهی لازم است تا هنگام کار با یک المان در برنامه، آن را از هرگونه تغییری در بازه به خصوصی در کد مصون نگه داریم. همچنین هنگام اجرای حلقه های تکرار شرطی مواردی پیش می آید که لازم است تا بر روال اجرای حلقه علاوه بر شرط تعیین شده نکات دیگری نیز اعمال نمود.

همانطور که در بخش قبلی هم دیدید، در زبان سی شارپ می توان برای یک بخش دلخواه از کد برچسب تعریف نموده و تا صورت لزوم از هر محلی در کد به آن منطقه پرش نمود
مقدمه ای بر شرطی ها در سی شارپ

یک مدل داده بسیار پرکاربرد در تمام زبان های برنامه نویسی داده های بولی یا منطقی هستند. معمولا این داده ها دارای تنها دو حالت درست/نادرست و یا یک/صفر هستند که برای ساختارهای تصمیم گیری و یا نشانه گذاری برخی حالات جهت تصمیم گیری به کار می روند.

یک ساختار داده ای رایج در زبان های برنامه نویسی حالتی است که یک دسته از داده ها درون یک متغیر می خواهیم قرار گیرند. مثلا برای یک کارمند چند حالت شامل "فعال"، "در مرخصی"، "مرخصی استعلاجی"، "بازنشسته" و "اخراج شده" می تواند داشته باشد. یک شکل مطلوب ذخیره و کار با این گونه داده ای آن است که متغیری داشته باشیم که بتواند در صورت لزوم هر کدام از این مقادیر (و تنها این مقادیر) را در خود ذخیره کند.

پس از بررسی اولیه مفاهیم enum در سی شارپ می خواهیم نگاه عمیق تری به شیوه ساخت و استفاده از آن ها در این زبان برنامه نویسی داشته باشیم.

همانند هر گونه داده ای دیگری ممکن است بخواهیم تابع یا متدی بنویسیم که پارامتر ورودی از نوع enum داشته باشد. همانطور که انتظار دارید هیچ تفاوتی بین این گونه داده ای با سایر انواع دیگر در این مورد وجود ندارد.

برای ایجاد متدی که enumeration باز می گرداند، نوع بازگشتی آن را به عنوان اسم enumeration مشخص کنید. در بدنه ی enumeration، هر کاری که لازم است انجام دهید. پیش از خروج از متد، مطمئن شوید مقداری که بازمی گردانید از نوع شمارشی (enumeration type) باشد.

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

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

حالات متفاوتی برای خروج از یک متد وجود دارد. بسته به شرایطی که در برنامه پیش می آید می توان در چندین نقطه از حوزه یک متد از دستور return استفاده نمود.

گاهی مواقع نمی توان شرایط خاصی هنگام تعریف حلقه برای شرط داخل آن در نظر گرفت و لازم است تا تصمیم گیری درباره ادامه /توقف حلقه بنا به شرایط اجرایی داخل بدنه حلقه صورت پذیرد. در این حالات یک حلقه ظاهرا بی نهایت ساخته و در بدنه حلقه هر کجا نیاز باشد آن را متوقف می کنیم.

در این بخش به آموزش تابع بازگشتی در سی شارپ خواهیم پرداخت. به طور کلی منظور از توابع بازگشتی (تعریف ریاضی) عملیاتی است که تولید خروجی برای هر مقداری، نتیجه فرمولی یکسان روی مقادیری از جملات قبلی آن باشد. مثلا فاکتوریل هر عدد برابر است با حاصل ضرب آن در فاکتوریل عدد یک واحد کوچکتر. در تقریبا تمام زبان های برنامه نویسی و سی شارپ نیز به کار بردن روش های بازگشتی در حل برخی مسایل رایج و پرکاربرد است.